2016-09-08 12 views
0

私のコードに問題があります。私はファイルから読み込むのが比較的新しいので、コードに何が間違っているのか分かりません。なぜユーザーの入力が正しく認識されないのですか?

# Flashcards 

#Read from a file containing questions in the form question, answer 


import random 
import time 

def __run__(): 
    read_file = open('state_capitals.txt','r') 
    lines = read_file.readlines() 
    ran_lines = random.randrange(0,49) 
    string_lines = lines[ran_lines] 
    global string_lines_split # To make debugging easier 
    string_lines_split = string_lines.split(',') 
    print(string_lines_split[1]) # Print correct answer 
    usr_input = input(string_lines_split[0]) 
    if usr_input == str(string_lines_split[1]): 
     print("Correct!") 
    else: 
     print("Incorrect") 
     print(usr_input) 

私は実行()を実行すると、私は私の答えを入力するまで、すべてが正常に動作します。私は答えを求められ、入力すると、私の答えがstring_lines_split 1の答えとまったく同じであっても、プログラムは自分の答えが間違っていることを表示します。テキストドキュメントへのリンク: http://web.mit.edu/jesstess/www/IntermediatePythonWorkshop/state_capitals.txt

>>>__run__() 
Helena 

MontanaHelena 
Incorrect 
Helena 

私の問題について読んで、その溶液に向かって私を導くいただきありがとうございます。私はstackoverflowコミュニティで働くことを楽しみにしています。

+0

[...'West Virginia,Charleston\n', 'Wisconsin,Madison\n', 'Wyoming,Cheyenne'] 

だからあなたのコードは次のようにすべきですか? –

答えて

1

最初にコードにエラーがあります。print(string_lines_final[1])print(string_lines_split[1])である必要があります。

あなたの問題は、に末尾に'\n'があるため、比較に失敗しました。

string_lines = lines[ran_lines]string_lines = lines[ran_lines].rstrip()に変更してみてください。

+0

末尾に改行されていない末尾の空白が重要な場合は、 'rstrip'に' '\ r \ n" "をおそらく渡します。 – ShadowRanger

+0

今後の参考として、空白文字を取り除くことでコードを修正する方法はありますか?私は、空白を削除すると、コードを1行に変換すると仮定しています。これが正しければ、ランダム関数は異なった働きをしますか?私はあなたの答えに本当に感謝し、文字列メソッドについてもっと学びたいと思っています。 –

0

「私の答えは正確string_lines_split1で答えと同じ場合でも、私の答えは間違っているプログラムのプリントは

その後、彼らはまったく同じではありません。これを受け入れる必要があります。なぜなら、Pythonは屈曲したり屈曲したりすることができないからです。彼らは同じではないが、彼らは同じように見える場合は、あなたが理由を解決するまで他のことを試してください。

ヒント:これに代えて

Alabama,Montgomery 
Alaska,Juneau 
Arizona,Phoenix 

Alabama,MontgomeryAlaska,JuneauArizona,Phoenix 

ファイルは次のように配置され、どのように来ますか?

ヒント:入力のlen()と正しい答えを比較してください。

ヒント:文字を1文字ずつ比較します。たぶん印刷character codes

0

ファイルを読み込むときに、read_file.readlines()によって返されたリストは、次のようになります。 `string_lines_final`が定義されて

def __run__(): 
    read_file = open('state_capitals.txt','r') 
    lines = read_file.readlines() 
    ran_lines = random.randrange(0,49) 
    string_lines = lines[ran_lines] 
    global string_lines_split # To make debugging easier 
    string_lines_split = string_lines.split(',') 
    print(string_lines_split[1]) # Print correct answer 
    usr_input = input(string_lines_split[0]) 
    if usr_input == str(string_lines_split[1].rstrip()): 
     print("Correct!") 
    else: 
     print("Incorrect") 
     print(usr_input) 
関連する問題