我应该用python编写一个程序,询问用户想要多少个乘法问题,然后随机地给他们一个值从1到10的问题。然后它会显示出他们的正确率。我的代码不断重复同一组数字,而且它也不会停留在用户要求的数字上。你能告诉我怎么了吗?
import random
import math
gamenumber = int(input("How many probems do you want?\n"))
num_1 = random.randint(1,10)
num_2 = random.randint(1,10)
def main():
random.seed()
count = 0
while count < gamenumber:
guess = int(input("What is " + str(num_1) + "x" + str(num_2) + "."))
answer = str(num_1*num_2)
correct = guess == answer
if guess == answer:
print("Correct!")
else wrong:
print("Sorry, the answer is", answer, ".")
result = correct/wrong
print("You got ", "%.1f"%result, "of the problems.")
main()
您只分配给
num_1
和num_2
一次。他们的价值观永远不会改变;你的数字怎么能改变?此外,您不增加count
,因此它的原始值总是与gamenumber
进行比较。你需要给你的两个变量分配一个新的随机数并增加你的计数器。
你提到的问题
这一点也不奇怪,因为您将
num_1
和num_2
(1)设置在main
函数之外,并且(2)设置在主while
循环之外。一个简单的修正是:同样,当您从不增加
count
计数器时,也不奇怪:您总是有count < gamenumber
。 一个简单的修正是:这里,
count += 1
表示add 1 to count *in place*
。你也可以做count = count + 1
,但是当你创建一个你并不真正需要的临时变量(count + 1
)时,效率会降低一些。其他问题
wrong
gamenumber
。虽然在本例中这不是问题,但是使用gamenumber
作为main
的参数会更容易,因为它是驱动游戏的变量。result
是在循环中定义的。您可能需要为每个正确答案增加一个计数器,并在主循环之后打印结果。result
计算为correct/wrong
。虽然我确定您的意思是correct/gamenumber
,但您必须格外小心:count
和gamenumber
是整数,分隔整数与分隔浮点数不同。例如,2/3
给出0
,而2/float(3)
给出0.6666666
。所以,我们得在某个地方用浮子。result
应该是result=correct*100./gamenumber
。gamenumber
为0,否则您的result
将未定义。总之,你的
main
函数应该是您忘记在循环中增加
count
,并且num_1
和num_2
不会得到新值。相关问题 更多 >
编程相关推荐