Kompleksowe powtorzenie materialu z 3 lat nauki informatyki w liceum
ð Podstawa programowa: I-VPrzez trzy lata nauki informatyki w liceum zdobyles/as szerokie kompetencje. Przypomnijmy sobie najwazniejsze zagadnienia z kazdego dzialu.
# Kluczowe konstrukcje Pythona - szybkie przypomnienie
# 1. Funkcja z petla i warunkiem
def filtruj(lista, prog):
"""Zwraca elementy wieksze od progu."""
return [x for x in lista if x > prog]
# 2. Praca z plikiem
with open("dane.txt", "r", encoding="utf-8") as f:
linie = f.readlines()
# 3. Slownik
uczniowie = {"Jan": 5, "Anna": 4, "Piotr": 3}
for imie, ocena in uczniowie.items():
print(f"{imie}: {ocena}")
# 4. Try/except
try:
wynik = int(input("Podaj liczbe: "))
except ValueError:
print("To nie jest liczba!")
# 5. Sortowanie
dane = [3, 1, 4, 1, 5, 9]
posortowane = sorted(dane) # nowa lista
dane.sort(reverse=True) # w miejscu, malejaco
# 6. NWD (Euklides)
def nwd(a, b):
while b != 0:
a, b = b, a % b
return a
# 7. Szyfr Cezara
def cezar(tekst, klucz):
wynik = ""
for z in tekst:
if z.isalpha():
baza = ord('A') if z.isupper() else ord('a')
wynik += chr((ord(z) - baza + klucz) % 26 + baza)
else:
wynik += z
return wynik
# 8. Fibonacci (iteracyjnie)
def fib(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
Stworz mape myslowa podsumowujaca 3 lata nauki informatyki. W centrum: "Informatyka LO", galazei: algorytmy, programowanie, technologie, spoleczenstwo. Do kazdej galazi dopisz 5-8 najwazniejszych tematow.
Odpowiedz na pytania: a) Zamien 156 z systemu dziesietnego na dwojkowy, b) Napisz algorytm NWD dla 48 i 36, c) Ile krokow potrzeba sortowanie babelkowe dla [5,3,1,4,2]? d) Co wypisze: print([x**2 for x in range(5)])?
a) 156 = 10011100 (bin)
156/2=78 r0, 78/2=39 r0, 39/2=19 r1,
19/2=9 r1, 9/2=4 r1, 4/2=2 r0,
2/2=1 r0, 1/2=0 r1 -> 10011100
b) NWD(48, 36):
48 = 1*36 + 12
36 = 3*12 + 0
NWD = 12
c) [5,3,1,4,2] -> [3,1,4,2,5] -> [1,3,2,4,5]
-> [1,2,3,4,5] -> [1,2,3,4,5]
Potrzeba 4 przebiegow (n-1)
d) [0, 1, 4, 9, 16]
Napisz program, ktory: a) wczytuje liste liczb od uzytkownika (zakonczenie: "koniec"), b) sortuje je babelkowo, c) znajduje srednia, mediane, minimum, maksimum, d) zapisuje wyniki do pliku. Uzyj funkcji i obslugi bledow.
def wczytaj_liczby():
"""Wczytuje liczby od uzytkownika."""
liczby = []
while True:
wejscie = input("Podaj liczbe (lub 'koniec'): ")
if wejscie.lower() == "koniec":
break
try:
liczby.append(float(wejscie))
except ValueError:
print("To nie jest liczba!")
return liczby
def sortuj_babelkowo(lista):
"""Sortowanie babelkowe."""
lst = lista[:]
n = len(lst)
for i in range(n - 1):
for j in range(n - 1 - i):
if lst[j] > lst[j + 1]:
lst[j], lst[j + 1] = lst[j + 1], lst[j]
return lst
def statystyki(lista):
"""Oblicza statystyki."""
n = len(lista)
srednia = sum(lista) / n
posortowana = sorted(lista)
if n % 2 == 0:
mediana = (posortowana[n//2-1] + posortowana[n//2]) / 2
else:
mediana = posortowana[n//2]
return {
"srednia": srednia,
"mediana": mediana,
"minimum": min(lista),
"maksimum": max(lista)
}
def zapisz_wyniki(lista, stats, plik="wyniki.txt"):
"""Zapisuje wyniki do pliku."""
with open(plik, "w", encoding="utf-8") as f:
f.write(f"Posortowane: {lista}\n")
for klucz, wartosc in stats.items():
f.write(f"{klucz}: {wartosc}\n")
print(f"Wyniki zapisane do {plik}")
def main():
liczby = wczytaj_liczby()
if not liczby:
print("Brak danych!")
return
posortowane = sortuj_babelkowo(liczby)
stats = statystyki(liczby)
print(f"Posortowane: {posortowane}")
for k, v in stats.items():
print(f"{k}: {v}")
zapisz_wyniki(posortowane, stats)
if __name__ == "__main__":
main()
Ocen swoje kompetencje z informatyki w skali 1-5 w kazdym dziale: algorytmy, programowanie Python, HTML/CSS, bazy danych SQL, bezpieczenstwo, praca z dokumentami. Dla kazdego dzialu napisz: co umiem dobrze i co chcialbym jeszcze poprawic. Okresl swoj plan dalszego rozwoju po liceum.