2017-10-01 5 views
1

2年前にGCSEを終了してからPythonをもう一度習得し始めました。私はC#で少し背景を持っていますが、簡単なプログラム作業をするのは難しいです。ユーザー入力がPythonのテキストファイルの行と同じかどうかをチェックするのに問題がある

プログラムはクイズです。テキストファイルからの入力を受け取り、各行を変数に格納します。次にプログラムは入力形式で回答を受け取りますが、質問に正解を入力すると、等価演算子はテキストファイルからのユーザー入力と行を同じものとして認識しません。

テキストファイルは、最初の行に「質問」、2番目に「アンサー」などの形式で入力します。

相続人は、私がこれまで持っているもの:

quiz = open("cseasy.txt","r") 

wholequiz = quiz.readlines() 

q1 = wholequiz[0] 

a1 = wholequiz[1] 

mark = 0 

ua1 = input(q1) 

print (ua1) 

print(a1) 

if a1 == ua1: 

    print ("Correct!") 

    mark = mark + 1 

else: 

    print ("Incorrect!") 

私はすべてのソリューションに感謝するだろう、なぜ現在のプログラムは、私が欲しい結果を生成されていません。

上記のq1の答えはAですが、「A」と入力すると、プログラムの出力は「間違っています!」です。

wholequiz = quiz.readlines() 

+0

Python 2または3を使用していますか? –

+0

'a1 = wholequiz [1] .rstrip()'または改行を受け取ります –

+0

これを試してください: 'for wholequiz:print(row)'。ファイルから読み込んだ各行の最後に '\ n'改行がありますが、' input'によって返された文字列は '\ n'で終わらない –

答えて

2

あなたは末尾の改行(\n)と行のリストを取得します。あなたが行ずつ読んでいるとき、この方法が有用であること

a1 = wholequiz[1].rstrip() 

ていますが、一度にファイル全体を読んでいることから、あなたも行うことができます::比較はあなたがない限り、成功することはできません

wholequiz = quiz.read().splitlines() 

改行のために削除する必要はありません。もちろん、ファイル内に後ろに空白があり、それが削除されない場合(rstripメソッドがあります)

+1

また、' wholequiz = quiz.read()。splitlines() ' –

+0

新しい行では、どういう意味ですか?私はまだC#の知識をPythonに移そうとしています。 Visual Studioでは、プログラムをステップバイステップで実行することができます。変数の内容 –

+0

改行文字を意味します。 –

関連する問題