2016-11-21 7 views
0

私は最近、pythonで始まって、何らかのフラッシュカードを作ろうとしていました。私はメモ帳の中にテキストファイルを作成し、単純な数学の問題を書くだけでこれを行いました。問題はこのように書かれました。Python 3でフラッシュカードを作成しようとしています

1 + 1 = ???

2 + 2 = ???

8 x 4 = ???

私のコードはこれでした。

#!/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") 

問題は、私が答えを入れたとき、それはいつも私が入れたものが間違っていると言い、なぜ私は理解できないのですか?私は答えを含む行この

1 + 1 = ??? 

2 
Wrong 
2 + 2 = ??? 

4 
Wrong 
8 x 4 = ??? 

32 
Wrong 
Done 

答えて

1

のような画面になるだろう

は、改行文字\nで終わります。ファイル「cardsss場合

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") 

このソリューションは動作します:

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

ありがとう、それは私が持っていた問題を解決した!その問題や.strip()コードを知りませんでした。ご協力いただきありがとうございます。 –

0

ソリューション:あなたはストリップあなたがアイテムを一致させるために、ファイルから読んでいるラインオフ改行文字に必要.txt 'には空の行は含まれません。

+0

これはうまくいきましたが、どうしてTEST_NUM = 3をそこに置いたのか、というのはどういうことでしょうか? –

+0

これは単なる例でした。 'while True:' whileループを使ってそれを解くことができ、 'next(f)'がファイルの終わりを意味する行として 'None'を提供する場合はそのままにしておきます。 – Fomalhaut

関連する問題