Witam!
Piszę sobie program z quizem, wzoruję się na tym z kursu C++ pana Zelenta. Po drodze napotkałem mały problem. Otóż niezależnie jaką odpowiedź poda użytkownik, program uzna, że odpowiedział on źle. Wyjątkiem jest ostatnie pytanie, gdzie poprawna odpowiedź zostaje zaliczona. Nie wiem dlaczego tak się dzieje. Kolejnym, już takim miniproblemem są odstępy miedzy kolejnymi wierszami w programie. Czy da się ich jakoś pozbyć? Strasznie nie estetycznie to wygląda.
Kod:
# Quiz
import sys
def file_open(file_name):
"""otwarcie pliku"""
try:
file = open(file_name, "r")
return file
except IOError:
print("Nie można otworzyć pliku", file_name)
input("Aby zakończyć program, naciśnij klawisz Enter")
sys.exit()
file = file_open("quiz.txt")
print(file.readline(), file.readline()) # nazwa quizu i autor
for x in range(0, 5): # wypisuje kolejno 5 pytań
print(file.readline()) # treść pytania
for y in range(0, 4): # wypisuje 4 odpowiedzi
print(file.readline()) # 4 odpowiedzi
correct = file.readline() # poprawna
player = input("Odpowiedź: ") # odpowiedź gracza
if correct == player:
print("Poprawna odpowiedź\n")
else:
print("Zła odpowiedź\n")
Plik txt z treścią quiz'u:
Programowanie w Pythonie
Gal Anonim
Typ zmiennych o nazwie float przechowuje:
A.liczby calkowite
B.napisy
C.liczby zmiennoprzecinkowe
D.pojedyncze znaki
c
Która biblioteka jest potrzebna do marynowania list:
A.sys
B.pickle
C.shelve
D.random
b
Ktora deklaracja jest zapisana poprawnie?
A.int x = 10;
B.integer x = 10;
C.x:integer:10
D.x = 10
d
Co się stanie po wywołaniu komendy x = random.choice(['win', 'lose', 'draw'])
A.nic się nie stanie
B.wyslosuję się liczba z przedzału od 1 do 3
C.wyslosuję się jeden z elemntów listy
D.zostanie wskazane miejsce w pamięci, w którym zapisana jest ta lista
c
Ile razy wykona sie petla: for x in range(0, 3)
A.ani razu
B.4
C.3
D.7
c