2016-07-26 11 views
-3

私は現在、質問のリストを無限に、または誰かが間違った答えを得るまで、コードを欲しいと思っています。私は現在使用しています連続ランダム質問ですか?

random.shuffle(questions) 

for question in questions: 
    question.ask() 

リストのすべての質問を一度尋ねてください。

ユーザーが間違った回答を入力するまで、継続的に確認するにはどうすればよいですか?ここに私の現在のコードは次のとおりです。

また
class Question(object): 
    def __init__(self, question, answer): 
     self.question = question 
     self.answer = answer 

    def ask(self): 

     response = input(self.question) 
     if response == self.answer: 
      print "CORRECT" 
     else: 
      print "wrong" 

questions = [ 
    Question("0", 0), 
    Question("π/6", 30), 
    Question("π/3", 60), 
    Question("π/4", 45), 
    Question("π/2", 90), 
    Question("2π/3", 120), 
    Question("3π/4", 135), 
    Question("5π/6", 150), 
    Question("π", 180), 
    Question("7π/6", 210), 
    Question("4π/3", 240), 
    Question("5π/4", 225), 
    Question("3π/2", 270), 
    Question("5π/3", 300), 
    Question("7π/4", 315), 
    Question("11π/6", 330), 
    Question("2π",360), 
] 

、あなたははるかに高く評価されるだろう正しいすべての質問に1つスコアを追加する方法を教えてもらえます。私はこれをやろうとしましたが、すでに5秒ごとにグローバルスコア変数から1を差し引くプログラムがあります。同じ変数を編集し続けたいのですが、エラーが発生します。

+0

本当にインデントされていますか? – Li357

+2

[Loops in Python 3.4.3](http://stackoverflow.com/questions/31445050/loops-in-python-3-4-3)または任意の数の「___までユーザーに質問し続ける」の可能な複製[1](http://stackoverflow.com/questions/20337489/python-how-to-keep-repeating-a-program-until-a-specific-input-is-obtained)、[2](http: /stackoverflow.com/questions/23294658/asking-the-user-for-input-until-they-give-a-valid-response)、[3](http://stackoverflow.com/questions/8114355/loop-特定のユーザー入力まで)、[4](http://stackoverflow.com/questions/12556907/continually-prompting-user-for-input-in-python)など – TessellatingHeckler

+0

ああ、私の悪い、それは私が上にコピーしたときにうんざりしているようだ、私は修正されます – Warstolrem

答えて

0

にループを変更します。答えが正しければTrue、答えが間違っていればFalse。それは次のようになります。そして、あなたがそのような質問を繰り返し処理でき

def ask(self): 
    response = input(self.question) 
    if response == self.answer: 
     print "CORRECT" 
     return True 
    else: 
     print "wrong" 
     return False 


(!あなたは、まずスコア変数を作成する必要があります)

for q in questions: 
    if q.ask() is True: 
     score += 1 
    else: 
     break #Breaks out of the while loop 

Eitherway、あなたがする必要があります文字列と整数(これは決して同じではない)を比較しないようにあなたの答えの文字列も作るので、質問は次のようになります:

questions = [ 
    Question("0", "0"), 
    Question("π/6", "30"), 
    Question("π/3", "60"), 
    Question("π/4", "45"), 
    ... 

私はあなたを助けてくれることを願っています!

0

次のようなwhileループの何かを持つリストをループでは、おそらく

score = 0 
currIndex = 0 

#ask a question to start off 
q1 = questions[currIndex] 
#get the answer 
answer = q1.ask() 
while(answer == q1.answer): 
    #ask the question at this index 
    score+=1 
    q1=questions[currIndex] 
    answer = q1.ask() 

    currIndex+=1 
    #reset the loop? 
    if currIndex == len(questions)-1: 
     currIndex = 0 

はまだそれをテストしていませんでしたが、これは動作するはず?そうでなければ無限に答えが間違ってくるまで行く。 編集:おっと、完全にそれを読んでいない、私が正しいか間違って返す尋ね行い、その後、それは()の戻り値を尋ねる与える試してみる価値があるかもしれない

while (answer == "CORRECT"): 
関連する問題