Python zajęcia 5/6

Python zajęcia 5/6
Photo by Tine Ivanič / Unsplash

Pętla for

  • "wykonaj coś tyle razy ile jest elementów w "
  • umożliwia nam przemieszczanie się po elementach jakiejś sekwencji np. Znakach w ciągu znaków, czy elementach listy/krotki
  • pętla wykonuje się tyle razy ile mamy elementów w sekwencji
for litera in "Robisz.to":
	print(litera)
for element in ["a", "b", "c"]:
	print(element)

Nie ma obowiązku wykorzystywania elementu sekwencji w powtarzalnym bloku. Jeśli używamy go jedynie do przemieszczania się po sekwencji to dobrą praktyką jest nazwanie go "_" (czyli użycie znaku podłogi).

! metoda items zamienia słownik na listę krotek

! nie można nazywać naszych plików jak importowane moduły


Pętla while

  • "... wykonuj tak długo aż"
  • pętla ta wykonuje się tak długo jak jakiś warunek jest spełniony
  • do przerwania klawiaturowego zapętlonej w nieskończonośc pętli: ctrl + c
  • pętla for wiemy ile razy się wykona, pętla while nie wiemy kiedy spełni sie warunek
i = 0

while i < 10:
	print(i)
	i += 1

Jeśli chcemy wyjść z pętli wcześniej (w przypadku for zanim dojdziemy do ostatniego elementu, w przypadku while zanim warunek zwróci False) możemy skorzystać z break.

i = 0

while True:
	if i < 10:
		break
	print(i)
	i += 1

Funkcja range

Jeśli nie mamy jakiejś gotowej sekwencji z odpowiednią ilością elementów to z pomocą może przyjść nam funkcja range.

W najprostszej postaci konstruujemy ją tak:

range(ilośc_elementów)

for _ in range(3):
	print(Hej)

Jeśli jednak potrzebujemy jakiegoś konkretnego zakresu (np. od 10 do 20 etc) i o konkretnym kroku (czyli elementy zwiększają się o konkretną wartość) można skorzystać z dodatkowych parametrów:

 range(start, stop, krok)

Kwestionariusz

import random

#Dane quizu
pytania = [
    {
        "pytanie": "Która funkcja w Pythonie służy do wpisywania tekstu?",
        "opcje": [
            ("input ()", 0),
            ("print()", 1),
            ("display()", 0)
        ],
    },

    {
        "pytanie": "Jakiego operatora używa się do potęgowania?",
        "opcje": [
            ("**", 1),
            ("//", 0),
            ("$$", 0)
        ],    
    },
    
    {
        "pytanie": "Który z poniższych nie jest poprawną nazwą zmiennej?",
        "opcje": [
            ("zmienna2", 0),
            ("zmienna_2", 0),
            ("2zmienna", 1)
        ],
    },

    {
        "pytanie": "Jak zamienić liczbę całkowitą na typ zmiennoprzecinkowy?",
        "opcje": [
            ("int()", 0),
            ("str()", 0),
            ("float()", 1)
        ],
    },

    {
        "pytanie": "Jakiego operatora używa się do sprawdzenia czy dwie wartości są sobie równe?",
        "opcje": [
            ("!=", 0),
            ("==", 1),
            ("=", 0)
        ],
    },

    {
        "pytanie": "Który symbol jest używany do komentowania pojedynczej linii kodu?",
        "opcje": [
            ("#", 1),
            ("//", 0),
            ("$", 0)
        ],
    },

    {
        "pytanie": "Która z poniższych fukncji konwertuje wartość na liczbę całkowitą?",
        "opcje": [
            ("int()", 1),
            ("float()", 0),
            ("str()", 0)
        ],
    },

    {
        "pytanie": "Co będzie wynikiem print(5<3 or 10>5) ?",
        "opcje": [
            ("error", 0),
            ("false", 0),
            ("true", 1)
        ],
    },

    {
        "pytanie": "Która funkcja pozwala na pobranie danych wprowadzonych przez użytkownika z klawiatury ?",
        "opcje": [
            ("print()", 0),
            ("input()", 1),
            ("get()", 0)
        ],
    },

    {
        "pytanie": "Jaką wartość będzie mieć zmienna x po wykonaniu poniższego kodu ? x = 10 x +=5",
        "opcje": [
            ("5", 0),
            ("10", 0),
            ("15", 1)
        ],
    }
]

wyniki_uczestnikow = {}

imie = input("Wpisz swoje imie: \n")

nr_odp = ["a", "b", "c"] 
punkty = 0

random.shuffle(pytania)

for pytanie in pytania:
    
    print(pytanie["pytanie"])
    random.shuffle(pytanie["opcje"])
    print(f"a. {pytanie["opcje"][0][0]}")
    print(f"b. {pytanie["opcje"][1][0]}")
    print(f"c. {pytanie["opcje"][2][0]}\n")
    
    odp_użytkownika = input("wprowadź odpowiedź a,b,c :")

    index_odp = nr_odp.index(odp_użytkownika)
    
    poprawna_odp = pytanie["opcje"][index_odp][1]
   

    if poprawna_odp == 1:
        print("\nPoprawna odpowiedź\n")
        punkty += 1
    else:
        print("\nBłędna odpowiedź\n")

print(f"Twój wynik: {punkty}/{len(pytania)} punktów\n")

wyniki_uczestnikow[imie]=punkty