2017-06-12 8 views
0

私はリストをユーザからの回答を比較しようとしています:リストの項目をユーザー入力と比較するにはどうすればよいですか?

answers=["Sundar Pichai","Mark Zukenberg","Narendra Modi"] 
print ('Welcome to Quizz!!') 
player_name= raw_input("Enter Your Name:") 
def out_ans(): 
    guess_ans = raw_input("enter your answer:")  
    for ans in answers: 
     if guess_ans.lower() == ans.lower(): 
      print(player_name +" correct answer") 

     else: 
      print(player_name + " its a wrong answer") 
print ("Q.No 1 Who is the present CEO of Google??")    
out_ans() 
print ("Q.No 2 Who is the founder of FaceBook??") 
out_ans() 

これは正しさについてユーザーに通知する、私はあなたが一度だけメッセージを出力する必要があると思う出力

Welcome to Quizz!! 

Enter Your Name: xyz 
Q.No 1 Who is the present CEO of Google?? 
enter your answer: sundar pichai 
xyz its a correct answer 
xyz its a wrong answer 
xyz its a wrong answer 
Q.No 2 Who is the founder of FaceBook?? 
enter your answer: mark zukenberg 
xyz its a wrong answer 
xyz its a correct answer 
xyz its a wrong answer 
+4

あなたのコードの問題は何ですか? – Ajax1234

+3

は、1つではなく3つの出力を問題にしていますか? 'right = False'フラグが正しいと判断し、forループの後にのみ印刷する場合はTrueに設定されていると考えるかもしれません。 – depperm

+0

if条件の後に' break'文を追加することもできます。 –

答えて

2
answers=["Sundar Pichai","Mark Zukenberg","Narendra Modi"] 
print ('Welcome to Quizz!!') 
player_name= raw_input("Enter Your Name:") 

def out_ans(): 
    guess_ans = raw_input("enter your answer:") 
    if guess_and.lower() in [x.lower() for x in answers]: 
     print(player_name +" correct answer") 
    else: 
     print(player_name + " its a wrong answer") 


print ("Q.No 1 Who is the present CEO of Google??")    
out_ans() 
print ("Q.No 2 Who is the founder of FaceBook??") 
out_ans() 

しかし、あなたはどう思いますか私は最初の質問 'マークズッケンベルク'に答えると起こりますか? :)はい、あなたは正しい - プログラムは正解であると言うでしょう。このような状況を避けるために、同様にあなたのクイズの変更アーキテクチャ:

def check_ans(player_ans, valid_answer): 
    result = "correct answer" if player_ans.lower() == valid_answer.lower() else "its a wrong answer" 
    return '{0} {1}'.format(player_name, result) 

quiz = (("Q.No 1 Who is the present CEO of Google??", "Sundar Pichai"), 
     ("Q.No 2 Who is the founder of FaceBook??", "Mark Zukenberg")) 

print('Welcome to Quizz!!') 
player_name = input("Enter Your Name:") 

for question, answer in quiz: 
    player_ans = input(question) 
    print(check_ans(player_ans, answer)) 
+0

'{0} {1}'を返す。format(player_name、result) '{0} {1}'の必要性は何ですか? – mightybeard

+0

これはフォーマット関数(https://docs.python.org/2/library/stdtypes.html#str.format)によって発生します。私はこれが 'player_name + '' + result'のような文字列を連結するよりも良いアプローチだと考えています。 – biniow

4

です彼の答え。

その後、あなたはこのような何か必要があります:あなたは、あなたがあなたの応答を見つけたときに、毎回を印刷する必要が戻りません

def out_ans(): 
    guess_ans = raw_input("enter your answer:") 
    correct = False 
    for ans in answers: 
     if guess_ans.lower() == ans.lower(): 
      correct = True 
    if correct: 
     print(player_name +" correct answer") 
    else: 
     print(player_name + " its a wrong answer") 
1

を:

def out_ans(): 
    guess_ans = raw_input("enter your answer:")  
    for ans in answers: 
     if guess_ans.lower() == ans.lower(): 
      #if we find a correct answer, exit 
      print(player_name +" correct answer") 
      return 
    #if didn't find any correct answer 
    print(player_name + " its a wrong answer") 
1

はこれを試してみてください:

answers=[ "Sundar Pichai", "Mark Zukenberg", "Narendra Modi" ] 
flagGuessWrong = False 
print ('Welcome to Quizz!!') 

player_name = raw_input("Enter Your Name:") 


def out_ans(): 
    guess_ans = raw_input("enter your answer:")  
    for ans in answers: 
    if guess_ans.upper() == ans.upper(): 
     print(player_name +" correct answer") 
     flagGuessWrong = False 
     break 
    else: 
     flagGuessWrong = True 

    if(flagGuessWrong): 
     print(player_name + " its a wrong answer") 


print ("Q.No 1 Who is the present CEO of Google??")    
out_ans() 
print ("Q.No 2 Who is the founder of FaceBook??") 
out_ans() 

それは、アレイ上にあなたが持っているすべてのものを比較するが、それはないだろう心の中で維持されます。この方法正しい答えを教えてください(例:Q.No 2 FaceBookの創始者は誰ですか?)> Narendra Modi(これは正しいでしょう)これはあなたが配列全体をループしていて、 (私の変更)。残りの部分は、キー/値のペアを見つけて正しい答えを返すように、ロジック、多分辞書を適用する必要があります。

関連する問題