2016-11-21 4 views
0

Ich habe gerade erst mit Python begonnen und versuchte, eine Art von Flash-Karten zu machen. Ich tat dies, indem ich eine Textdatei innerhalb des Notizblocks machte und nur einige einfache mathematische Probleme schrieb. Die Probleme wurden so geschrieben.Versuchen, Flash-Karten in Python 3

1 + 1 = ???

2 + 2 = ???

8 x 4 = ???

dann war mein Code das.

#!/usr/bin/python3 

x = 0 
f=open('cardsss.txt').readlines() 
while x < 6: 
    line = f 
    print(line[x]) 
    answer = input() 
    if answer == line[x+1]: 
     print ('Correct') 
    else: 
     print ('Wrong') 
    x = x + 2 


print ("Done") 

Das Problem ist, dass, wenn ich in der Antwort gesagt, es sagt immer, dass ich in der falschen was auch immer setzen ist, und ich kann nicht herausfinden, warum.

Wo lese ich ein Bild wie dieses

1 + 1 = ??? 

2 
Wrong 
2 + 2 = ??? 

4 
Wrong 
8 x 4 = ??? 

32 
Wrong 
Done 

Antwort

1

Die Zeilen enthalten die Antworten mit einer neuen Linie Charakter \n Ende bekommen würde. Sie müssen Streifen die neue Linie Zeichen aus den Zeilen, die Sie aus der Datei gerade liest die Elemente zu machen entsprechen:

if answer == line[x+1].strip(): 
    ... 
+0

Vielen Dank, das hat funktioniert und das Problem behoben, das ich hatte! Wusste nie, dass das das Problem oder der .strip() Code ist. Danke für Ihre Hilfe. –

0

Lösung:

TESTS_NUM = 3 

with open('cardsss.txt') as f: 
    for _ in range(TESTS_NUM): 
     line = next(f) 
     print(line) 
     answer = input("Your answer: ") 
     right_answer = next(f) 
     if answer.strip() == right_answer.strip(): 
      print("Correct") 
     else: 
      print("Wrong") 

print("Done") 

Diese Lösung funktioniert, wenn die Datei ‚cardsss .txt 'enthält keine leeren Zeilen.

+0

Das hat funktioniert, aber ich habe mich nur gewundert, warum hast du TEST_NUM = 3 drin, was macht es? –

+0

Das war nur ein Beispiel. Sie können es mit der loop 'while True:' lösen und lassen Sie es, wenn 'next (f)' 'None' als eine Zeile, die das Ende der Datei, denke ich, bedeutet. – Fomalhaut