如何使用while循环重复生成随机加法问题?

时间:2019-11-01 16:35:42

标签: python while-loop

我是一名初学者,尝试制作自己的小趣味数学游戏,其中生成两个随机数,并要求用户将它们加在一起。如果用户输入了简单加​​法问题的正确答案,则while循环将重复其自身。问题是当循环重置时,第一个问题中的相同两个数字将被回收。我想这样做,以便每次重置循环时数字都会更改,因此每次用户获得正确答案时都会提出一个独特的问题。

如果代码不好,我会为此道歉。

我对代码非常陌生,不知道如何详细解释我所做的事情。我尝试将def函数与randrange(1,1001)一起使用,但这似乎并没有真正起作用。我在各种论坛中进行了广泛搜索,但我真的不知道该如何解决。

import random

for x in range(1):
    Random = random.randint(1,1001)
    Random_two = random.randint(1,1001)
lit = (Random + Random_two)
answer = str(lit)

while answer == str(lit):
    print("What is " + str(Random) + " + " + str(Random_two) + "?")    
    userInput = input()

    if userInput == (str(lit)):
        print("Next question.")
        answer = str(lit)

    else:
        print("Game Over.")
        exit()

典型结果如下:

What is 307 + 602?
909
Next question.
What is 307 + 602?
2
Game Over. #game will exit if the answer is wrong

如您所见,相同的两个数字在问题中成对出现,如果用户输入正确的答案,这将无限期重复。<​​/ p>

我希望输出是这样的:

What is 307 + 602?
909
Next question.
What is 10 + 978? #new random numbers if the previous answer was correct

2 个答案:

答案 0 :(得分:0)

您的本质问题是控制流程。您必须问自己:我想重复哪些代码。您希望每个问题都是唯一的,因此希望重复编号生成和问题处理。

由于您的"description": "filling out this field to avoid warnings", "repository": "not publishing", "readme": "not publishing", "license": "not publishing", 循环基于用户正确回答了问题,因此您需要先生成一个配对。但是,您可以使循环基于任何内容(while,如果用户回答错误的问题,然后使while True脱离循环。此外,break循环是完全不必要的:

for

为了简短起见,我只是稍微压缩一下您的病情。

我希望这会有所帮助。

PS:是的,我很无聊,并且对此感到很开心,所以为什么不呢。

答案 1 :(得分:0)

代码中的问题是

for x in range(1):
     Random = random.randint(1,1001)
     Random_two = random.randint(1,1001)

在整个程序运行期间,您只能将随机值分配给变量一次。因此,每次运行程序时,您将获得相同的值。 看看下面的程序:

import random
while(True):
    rand1=random.randint(1,1001)
    rand2=random.randint(1,1001)    
    ans=int(input('what is '+str(rand1)+'+'+str(rand2)+'?\n'))
    if( ans == (rand1+rand2)):  
        print("The answer is \nNext Question correct:\n")
    else:
        print("Game Over\n")
        break

这里while语句运行一个无限循环,因此在每次迭代中,新值将分配给带有随机整数的变量。