2016-04-16 11 views
-5

私はPythonでクイズを作っています。クイズの最後に間違った質問を表示する方法を知りたいのですが。例えば、私は10の質問クイズを持っていて、3つが間違っているので、私はそれらの質問をプログラムに表示し、それらを取るためのオプションを私に与えたい。私は1つの場所ですべての質問を聞いて確認するだろうどのように間違った質問を印刷するには?

correct=0 
incorrect=0 

def tryagain(): 
    while True: 
     answer = input('Do you want to continue?: Press Y for yes and N for no ') 
     if answer.lower().startswith("y"): 
      print() 
     elif answer.lower().startswith("n"): 
      exit() 

print('****** Welceome to the Online Maths Test ********') 
print() 
print() 
print() 
print() 
print() 
print() 
print() 
import os 
os.system("PAUSE") 
import os 
os.system('cls') 
print('Question 1: 123 - 39 = ? \n 1. 64 \n 2. 44 \n 3. 74 \n 4. 84') 
print() 
answer=int(input()) 
if answer == 4: 
     print() 
     print() 
     global correct 
     correct=correct+1 
elif answer != 4: 
     print() 
     global incorrect 
     incorrect=incorrect+1 

import os 
os.system('cls') 
print('Question 2: 123+39 = ? \n \n 1. 162 \n 2. 166 \n 3. 62 \n 4. 66') 
print() 
answer=int(input()) 
if answer == 1: 
     print() 
     print() 
     global correct 
     correct=correct+1 
elif answer != 1: 
     print() 
     global incorrect 
     incorrect=incorrect+1 

import os 
os.system('cls') 
print('Question 3: 123*9 = ? \n 1. 1007 \n 2. 1107 \n 3. 1106 \n 4. 1116') 
print() 
answer=int(input()) 
if answer == 2: 
     print() 
     print() 
     global correct 
     correct=correct+1 
elif answer != 2: 
     print() 
     global incorrect 
     incorrect=incorrect+1 

import os 
os.system('cls') 
print('Question 4: 135/15 = ? \n 1. 8 \n 2. 8.5 \n 3. 9 \n 4. 9.5') 
print() 
answer=int(input()) 
if answer == 3: 
     print() 
     print() 
     global correct 
     correct=correct+1 
elif answer != 3: 
     print() 
     global incorrect 
     incorrect=incorrect+1 

import os 
os.system('cls') 
print('Question 5: 12 * (12/2) = ? \n 1. 144 \n 2. 6 \n 3. 72 \n 4. 36') 
print() 
answer=int(input()) 
if answer == 3: 
     print() 
     print() 
     global correct 
     correct=correct+1 
elif answer != 3: 
     print() 
     global incorrect 
     incorrect=incorrect+1 

import os 
os.system('cls') 
print('Question 6: 130/2 + 8 = ? \n 1. 13 \n 2. 14 \n 3. 61 \n 4. 84') 
print() 
answer=int(input()) 
if answer == 4: 
     print() 
     print() 
     correct=correct+1 
elif answer != 4: 
     print() 
     global incorrect 
     incorrect=incorrect+1 

import os 
os.system('cls') 
print('Question 7: 10 + 12 + 13 * 6/2 = ? \n 1. 105 \n 2. 44 \n 3. 61 \n 4. 84') 
print() 
answer=int(input()) 
if answer == 3: 
     print() 
     print() 
     global correct 
     correct=correct+1 
elif answer != 3: 
     print() 
     global incorrect 
     incorrect=incorrect+1 

import os 
os.system('cls') 
print('Question 8: (10 + 12 + 13 * 6)/2 = ? \n 1. 50 \n 2. 44 \n 3. 61 \n 4. 84') 
print() 
answer=int(input()) 
if answer == 1: 
     print() 
     print() 
     global correct 
     correct=correct+1 
elif answer != 1: 
     print() 
     global incorrect 
     incorrect=incorrect+1 

import os 
os.system('cls') 
print('Question 9: 8 (12 + 6/3 * 2) - 1 = ? \n 1. 127 \n 2. 109 \n 3. 95 \n 4. 135') 
print() 
answer=int(input()) 
if answer == 1: 
     print() 
     print() 
     global correct 
     correct=correct+1 
elif answer != 1: 
     print() 
     global incorrect 
     incorrect=incorrect+1 

import os 
os.system('cls') 
print('Question 10: 1/1 * 1 - 1 + 1 = ? \n 1. 1 \n 2. -1 \n 3. 0 \n 4. -2') 
print() 
answer=int(input()) 
if answer == 1: 
     print() 
     print() 
     global correct 
     correct=correct+1 
elif answer != 1: 
     global incorrect 
     incorrect=incorrect+1 
     print() 
     print() 
     print() 
     print() 
     import os 
     os.system('cls') 
     print('Your total score is: ',correct,'/10') 
     print('Your presentage is: ',correct*100/10,'%') 
     print() 
     print() 
     print() 
     print() 
     tryagain() 

tryagain() 
+1

ご存知のように、使用するたびに 'import os 'する必要はありません。また、ループについて読むことをお勧めします。 –

+0

ここには最小限の例を掲示することに利点があります。私たちはあなたに答えを与えるために10の質問すべてを見る必要はありません。あなたは2つまたは3つの質問クイズを投稿できました。 – dbliss

答えて

0

は、ここに私のコードです。次に、不足している質問を記録するなどの変更を行うときは、変更を1か所で行うことができます。

私の例よりも、すべての質問を配列に入れ、その配列をループしてユーザーに質問することができます。

import os 

correct=0 
incorrect=0 
missed_questions=[] 

def tryagain(): 
    while True: 
     answer = input('Do you want to continue?: Press Y for yes and N for no ') 
     if answer.lower().startswith("y"): 
      print() 
     elif answer.lower().startswith("n"): 
      exit() 

def ask_question(question, correct_answer): 
    os.system('cls') # I'm not on Windows so this doesn't work for me 
    print question 
    print '' 
    answer = int(input()) 
    if answer == correct_answer: 
     print '' 
     print '' 
     global correct 
     correct += 1 
    else: 
     global incorrect 
     incorrect += 1 
     global missed_questions 
     missed_questions.append(question) 


print('****** Welceome to the Online Maths Test ********') 
print() 
print() 
print() 
print() 
print() 
print() 
print() 
os.system("PAUSE") # I'm not on Windows so this doesn't work for me 

## You could go further and put the data (all of the questions, correct answers, and 
## a flag to indicate whether the user got it correct) into one array and loop 
## through the array. In that same loop you can address how to make sure 
## that the tryagain() works properly. 
ask_question('Question 1: 123 - 39 = ? \n 1. 64 \n 2. 44 \n 3. 74 \n 4. 84', 4) 
ask_question('Question 2: 123+39 = ? \n \n 1. 162 \n 2. 166 \n 3. 62 \n 4. 66', 1) 
ask_question('Question 3: 123*9 = ? \n 1. 1007 \n 2. 1107 \n 3. 1106 \n 4. 1116', 2) 
ask_question('Question 4: 135/15 = ? \n 1. 8 \n 2. 8.5 \n 3. 9 \n 4. 9.5', 3) 
ask_question('Question 5: 12 * (12/2) = ? \n 1. 144 \n 2. 6 \n 3. 72 \n 4. 36', 3) 
ask_question('Question 6: 130/2 + 8 = ? \n 1. 13 \n 2. 14 \n 3. 61 \n 4. 84', 4) 
ask_question('Question 7: 10 + 12 + 13 * 6/2 = ? \n 1. 105 \n 2. 44 \n 3. 61 \n 4. 84', 3) 
ask_question('Question 8: (10 + 12 + 13 * 6)/2 = ? \n 1. 50 \n 2. 44 \n 3. 61 \n 4. 84', 1) 
ask_question('Question 9: 8 (12 + 6/3 * 2) - 1 = ? \n 1. 127 \n 2. 109 \n 3. 95 \n 4. 135', 1) 
ask_question('Question 10: 1/1 * 1 - 1 + 1 = ? \n 1. 1 \n 2. -1 \n 3. 0 \n 4. -2', 1) 

print() 
print() 

os.system('cls') 
print('Your total score is: ',correct,'/10') 
print('Your percentage is: ',correct*100/10,'%') 
print() 
print() 

for q in missed_questions: 
    print 'Missed question: ', q 
    print '' 

print() 
print() 
tryagain() 
+0

助けてくれてありがとう、私は間違った質問をカウントするためにリストを使用して実現しました。私はリストがこのような状況で動くとは思わなかった。 – Jamal

+0

このコードを実行しましたか? try_againでyを押すと、無限ループに陥ることがあります。 – dbliss

+0

私はコードの主要部分を実行しました。 'tryagain()'を修正するのではなく、サンプルコードにコメントを追加しました。これは、それを修正することである種の「メイン」ループを作成する必要があったからです。 – user212514

関連する問題