Cwiczenia praktyczne, pytania powtorkowe, rozwiazywanie zadan typowych
ð Podstawa programowa: I-VSprawdzian koncowy z klasy II technikum obejmuje material z calosci roku. Sklada sie z 3 czesci:
10 pytan testowych po 2 punkty. Tematy: algorytmy, programowanie, bazy danych, bezpieczenstwo, spoleczenstwo informacyjne.
3-4 zadania wymagajace pisemnej odpowiedzi: analiza algorytmu, zapytania SQL, pytania o technologie asystujace, bezpieczenstwo.
2 zadania programistyczne do rozwiazania na komputerze w Pythonie.
Prześledz dzialanie ponizszej funkcji i podaj wynik dla tajemnica(4):
def tajemnica(n):
if n <= 1:
return 1
return n * tajemnica(n - 1)
Zapisz kazde wywolanie i wartosc zwracana.
tajemnica(4) = 4 * tajemnica(3)
tajemnica(3) = 3 * tajemnica(2)
tajemnica(2) = 2 * tajemnica(1)
tajemnica(1) = 1 (przypadek bazowy)
Cofamy sie:
tajemnica(2) = 2 * 1 = 2
tajemnica(3) = 3 * 2 = 6
tajemnica(4) = 4 * 6 = 24
Odpowiedz: 24 (to silnia z 4, czyli 4!)
Masz tabele uczniowie (id, imie, nazwisko, klasa, srednia_ocen). Napisz zapytania SQL:
a) Wyswietl imiona i nazwiska uczniow z klasy "2a" posortowane alfabetycznie po nazwisku.
b) Wyswietl srednia ocen dla kazdej klasy.
c) Wyswietl uczniow ze srednia powyzej 4.5, posortowanych od najwyzszej sredniej.
-- a)
SELECT imie, nazwisko FROM uczniowie
WHERE klasa = '2a'
ORDER BY nazwisko ASC;
-- b)
SELECT klasa, AVG(srednia_ocen) AS srednia_klasy
FROM uczniowie
GROUP BY klasa;
-- c)
SELECT imie, nazwisko, srednia_ocen FROM uczniowie
WHERE srednia_ocen > 4.5
ORDER BY srednia_ocen DESC;
Napisz klase Konto (konto bankowe) z atrybutami: wlasciciel, saldo (domyslnie 0). Metody: wplac(kwota), wyplac(kwota) - z sprawdzeniem czy starczy srodkow, stan() - wyswietla saldo. Stworz 2 obiekty i przetestuj wszystkie metody.
class Konto:
def __init__(self, wlasciciel, saldo=0):
self.wlasciciel = wlasciciel
self.saldo = saldo
def wplac(self, kwota):
if kwota > 0:
self.saldo += kwota
print(f"Wplacono {kwota} zl. Saldo: {self.saldo} zl")
else:
print("Kwota musi byc dodatnia!")
def wyplac(self, kwota):
if kwota > self.saldo:
print(f"Brak srodkow! Saldo: {self.saldo} zl")
elif kwota <= 0:
print("Kwota musi byc dodatnia!")
else:
self.saldo -= kwota
print(f"Wyplacono {kwota} zl. Saldo: {self.saldo} zl")
def stan(self):
print(f"Konto: {self.wlasciciel}, Saldo: {self.saldo} zl")
# Test:
k1 = Konto("Jan Kowalski")
k1.wplac(1000) # Wplacono 1000 zl. Saldo: 1000 zl
k1.wyplac(300) # Wyplacono 300 zl. Saldo: 700 zl
k1.wyplac(800) # Brak srodkow! Saldo: 700 zl
k1.stan() # Konto: Jan Kowalski, Saldo: 700 zl
k2 = Konto("Anna Nowak", 500)
k2.wplac(200) # Wplacono 200 zl. Saldo: 700 zl
k2.stan() # Konto: Anna Nowak, Saldo: 700 zl
Napisz program, ktory: (a) wczytuje oceny z pliku tekstowego (kazda ocena w nowej linii), (b) oblicza: srednia, mediana, najwyzsza i najnizsza ocena, ile ocen kazdego rodzaju, (c) wyswietla wyniki, (d) zapisuje raport do pliku "raport.txt". Dodaj obsluge bledow.
def wczytaj_oceny(plik):
"""Wczytuje oceny z pliku."""
try:
with open(plik, 'r') as f:
oceny = [int(linia.strip()) for linia in f if linia.strip()]
return oceny
except FileNotFoundError:
print(f"Plik {plik} nie istnieje!")
return []
except ValueError:
print("Plik zawiera nieprawidlowe dane!")
return []
def mediana(lista):
"""Oblicza mediane."""
posortowana = sorted(lista)
n = len(posortowana)
if n % 2 == 1:
return posortowana[n // 2]
else:
return (posortowana[n // 2 - 1] + posortowana[n // 2]) / 2
def statystyki(oceny):
"""Oblicza statystyki ocen."""
if not oceny:
return None
wynik = {
'srednia': sum(oceny) / len(oceny),
'mediana': mediana(oceny),
'min': min(oceny),
'max': max(oceny),
'ilosc': len(oceny),
'rozklad': {}
}
for o in range(1, 7):
wynik['rozklad'][o] = oceny.count(o)
return wynik
def zapisz_raport(stats, plik):
"""Zapisuje raport do pliku."""
with open(plik, 'w') as f:
f.write("=== RAPORT OCEN ===\n")
f.write(f"Liczba ocen: {stats['ilosc']}\n")
f.write(f"Srednia: {stats['srednia']:.2f}\n")
f.write(f"Mediana: {stats['mediana']}\n")
f.write(f"Min: {stats['min']}, Max: {stats['max']}\n")
f.write("\nRozklad ocen:\n")
for ocena, ile in stats['rozklad'].items():
f.write(f" Ocena {ocena}: {ile}\n")
# Program glowny:
oceny = wczytaj_oceny("oceny.txt")
if oceny:
stats = statystyki(oceny)
print(f"Srednia: {stats['srednia']:.2f}")
print(f"Mediana: {stats['mediana']}")
zapisz_raport(stats, "raport.txt")
print("Raport zapisany do raport.txt")