1

我将随机进行 3 个问题的有趣测验,并提供 3 次猜测的机会。

在我尝试执行后,我尝试了正确的答案,但一直循环并告诉我的答案不正确并且无法停止循环,我不知道为什么......

谁能帮我看看?

q1 = 'What can one catch that is not thrown?'
a1 = 'A cold'
q2 = 'If you had only one match and entered a dark room containing an oil lamp, some kindling wood, and a newspaper, which would you light first?'
a2= 'The match'
q3 = 'Some months have 31 days, others have 30 days, but how many have 28 days?'
a3= 'All the months'

import random
quizzes = [q1, q2, q3]  #catagorise to quizzes

for answer in random.choice(quizzes):
    guesses = 3  # limits to 3 guesses
    random.choice(quizzes)
    asking = input('Your Answer is?\n')
    if   quizzes == q1 and asking == 'A cold':
        print( 'Bingo!!')
        break
    elif quizzes == q2 and asking == 'The match':
        print( 'Bingo!!')
        break
    elif quizzes == q3 and asking == 'All the months':
        print( 'Bingo!!')
        break
    elif guesses == 0:
        print( 'Sorry, you are reached the maximum guesses. Bye~now~')
    else:
        guesses -= 1  #reducing the max. guesses of 3 to 2 to 1
        print( "Sorry, it's incorrect.")
    result = asking
4

2 回答 2

0

该行for answer in random.choice(quizzes)实际上是获取一个随机测验字符串,然后遍历字符串中的每个字符;这就是为什么循环似乎没有停止的原因,因为它迭代的项目比您预期的要多。

你原来在循环中的那行,random.choice(quizzes),什么都不做;该random.choice()函数从列表中返回一个随机项。如果你没有对返回的值做任何事情,比如打印它,那么什么都不会发生。

您喜欢的原始行if quizzes == q1 and asking == 'A cold':不起作用,因为quizzes您的测验列表是,所以检查quizzes == q1将始终是False. 在我的代码中,由于我正在循环通过quizzesvia for quiz in quizzes,这意味着quiz在我的代码中是一个来自 的测验字符串quizzes,所以当我这样做时quiz == q1,它会正确地将当前quizq1q2进行比较q3

我注意到您在 和 中定义了您的答案,a1因此您可以简化代码并将其用于比较,例如而不是。a2a3askingasking == a1asking == 'A cold'

import random
quizzes = [q1, q2, q3]  #catagorise to quizzes
random.shuffle(quizzes)  # randomize the quiz order

for quiz in quizzes:  # loop through the list of quizzes
    guesses = 3     # limits to 3 guesses
    print(quiz)     # prompt the user with the quiz question
    while True:     # keep asking for answers until guesses run out, or the user gets a correct answer
           asking = input('Your Answer is?\n')
           if     quiz == q1 and asking == a1:
                  print( 'Bingo!!')
                  break
           elif   quiz == q2 and asking == a2:
                  print( 'Bingo!!')
                  break
           elif   quiz == q3 and asking == a3:
                  print( 'Bingo!!')
                  break
           elif   guesses == 0:
                  print( 'Sorry, you are reached the maximum guesses. Bye~now~')
                  break
           else:
                  guesses -= 1        #reducing the max. guesses of 3 to 2 to 1
                  print( "Sorry, it's incorrect.")
于 2020-09-29T22:33:56.700 回答
-1

你的问题是猜测的位置。现在它在你的 for 循环中。把它放在你的 for 循环之外,它应该可以工作。

你还应该看看你的

elif guesses == 0:

现在玩家即使猜到 0 次也能猜到。它可能应该是 <=1 。

您的代码将按照您想要的方式运行,如下所示:

q1 = 'What can one catch that is not thrown?'
a1 = 'A cold'
q2 = 'If you had only one match and entered a dark room containing an oil lamp, some kindling wood, and a newspaper, which would you light first?'
a2= 'The match'
q3 = 'Some months have 31 days, others have 30 days, but how many have 28 days?'
a3= 'All the months'

import random
quizzes = [q1, q2, q3]  #catagorise to quizzes
guesses = 3    

for answer in random.choice(quizzes):
           # limits to 3 guesses
           random.choice(quizzes)

           asking = input('Your Answer is?\n')
           if   quizzes == q1 and asking == 'A cold':
                  print( 'Bingo!!')
                  break
           elif   quizzes == q2 and asking == 'The match':
                  print( 'Bingo!!')
                  break
           elif   quizzes == q3 and asking == 'All the months':
                  print( 'Bingo!!')
                  break
           elif   guesses <=1:
                  print( 'Sorry, you are reached the maximum guesses. Bye~now~')
                  exit()

                  
           else:
                  guesses -= 1        #reducing the max. guesses of 3 to 2 to 1
                  print( "Sorry, it's incorrect.")
            
           result = asking
于 2020-09-29T22:29:39.603 回答