我是一名初学者,尝试制作自己的小趣味数学游戏,其中生成两个随机数,并要求用户将它们加在一起。如果用户输入了简单加法问题的正确答案,则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
答案 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
语句运行一个无限循环,因此在每次迭代中,新值将分配给带有随机整数的变量。