2017-10-10 11 views
0

私は数学ゲームを作成しようとしています。ここで私のリストから質問が無作為に選ばれ、対応する答えが与えられます。現時点では、私はランダムに質問を得ることができますが、質問に対応する答えではなく、リストから順に答えを出します。 ランダムな質問に対して正しい答えを得るにはどうすればよいですか。 ここに私のコードです。リストから式と答えを無作為に選ぶ - PYTHON

import random 

counter = 0 
score = 0 
incorrect = 0 

name=input("What is your name?") 
print("Hi",name,",welcome to your math quiz!") 

questions = ["10*2","4-2","6+12","6*4","12-5","6+54","1*0","3-6","4+0","65-9"] 
answers=["20","2","18","24",'7','60','0','-3','4','56'] 

idx_questions = list(enumerate(questions)) 
idx_answers = list(enumerate(answers)) 

random.shuffle(idx_questions) 

for idxq, question in idx_questions: 
    print(question) 
    ans = input("What is the answer? ") 
    for idxa, answer in idx_answers: 
     if idxq == idxa and ans == answer: 
      print("Correct") 
      score=score+1 
      print("Correct Answers=",score) 
      print("Incorrect Answers=",incorrect) 

     elif idxq == idxa and ans != answer: 
      print("Incorrect", answers) 
      incorrect=incorrect+1 
      print("Correct Answers=",score) 
      print("Incorrect Answers=",incorrect) 

print("End of quiz") 
print(name,"your score is",score,"out of 10") 
print(score*10,"%") 
+2

スクリーンショットをリンクするのではなく、投稿を編集して実際のコードを追加してください。これはユーザーがコードを読んで理解するのに役立ち、テストのためにコードをコピーすることができます。 – Hexaholic

答えて

0
import random 

counter = 0 
score = 0 
incorrect = 0 

questions = ["10*2","4-2","6+12","6*4"] 
answers=["20","2","18","24"] 

idx_questions = list(enumerate(questions)) 
idx_answers = list(enumerate(answers)) 

random.shuffle(idx_questions) 

for idxq, question in idx_questions: 
    print(question) 
    ans = input("What is the answer? ") 
    for idxa, answer in idx_answers: 
     if idxq == idxa and ans == answer: 
      print("Correct") 
     elif idxq == idxa and ans != answer: 
      print("Incorrect") 
+0

どうすればいいですか?私はPythonに新しいです – Jane

+0

@ジェーン私はいくつかのコードで私の答えを編集しました。それを確認してください。 – nachmr

+0

ありがとう!それは実際には完全に機能します。私の問題は、答えが間違っているときに、正しい答えを表示したいということです。しかし、現時点では、回答リスト全体が表示されます。何か提案はありますか?私は私の質問に私の現在のコードを追加しました – Jane

-1

あなたのコードの問題はrandom.shuffle()機能を使用しています。

ランダムな方法で質問リストをランダムに並べ替えます(基本的にリスト内の要素を入れ替えます)。そのため、特定のインデックスの回答が質問リストに一致しません。

この答えは、それをより明確にする必要がありますhttps://stackoverflow.com/a/976918/8750461

代わりにあなたが対応する答えを得るためにanswers[questions.index(q)]を使用し、その後、ランダムな質問を取得するためにq = random.choice(questions)を使用する場合があります。

もっと洗練された解決策がありますが、これは簡単な回答です。

+0

これを行うと、リストから1つのランダムな回答が生成され、各回答はたとえば3 – Jane

0

問題は、質問リストをシャッフルし、回答リストは変わらないということです。だから今、答えと質問は、別の位置を持って、彼らは一致しません。代わりに、そのインデックスでランダムなインデックスと印刷の質問を生成するだけです。

random_int = random.randint(0, len(questions)-1) 
print(question[random_int]) 

もちろん、同じ回答が2回ポップするのを防ぐためのメカニズムを構築する必要があります。一つの方法は、使用された質問を削除することです。

del questions[random_int] 
del answers[random_int] 
+0

これは素晴らしい動作です!ありがとうございました。私が抱えている問題は、リストのインデックスが9つの質問の後に範囲外であるということです。ただし、私のカウンターは10でrandom.randint at(0,10) – Jane

+0

あなたのリストがlen == 10ならインデックス10はありませんそれは0から9までです。あなたのrandom.randintは(0,9)でなければなりません。 –

関連する問題