我应该在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()
答案 0 :(得分:3)
您只能分配到num_1
和num_2
一次。他们的价值观永远不变你的数字如何改变?此外,您不会增加count
,因此始终会将其原始值与gamenumber
进行比较。
您需要为两个变量分配一个新的随机数并递增计数器。
答案 1 :(得分:3)
您忘记在循环中增加count
,num_1
和num_2
不会获得新值。
答案 2 :(得分:1)
我的代码不断重复相同的数字集
这并不奇怪,因为您将num_1
和num_2
(1)设置在main
函数之外,并且(2)设置在主while
循环之外。一个简单的修正是:
while count < gamenumber:
num_1 = random.randint(1,10)
num_2 = random.randint(1,10)
我的代码不会停留在要求的号码:
再一次,毫不奇怪,因为你永远不会增加count
计数器:你总是有count < gamenumber
。
一个简单的修正是:
while count < gamenumber:
num_1 = random.randint(1,10)
num_2 = random.randint(1,10)
guess = int(input("What is " + str(num_1) + "x" + str(num_2) + "."))
answer = str(num_1*num_2)
count += 1
此处,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
。result
为0,否则您的main
将无法定义。总而言之,您的def main(gamenumber):
random.seed()
count = 0
correct = 0
while count < gamenumber:
num_1 = random.randint(1,10)
num_2 = random.randint(1,10)
guess = int(input("What is " + str(num_1) + "x" + str(num_2) + "."))
answer = str(num_1*num_2)
count += 1
if guess == answer:
correct += 1
print("Correct!")
else wrong:
print("Sorry, the answer is", answer, ".")
if gamenumber > 1:
result = correct * 100./gamenumber
print("You got ", "%.1f"%result, "of the problems.")
功能应该是
{{1}}
答案 3 :(得分:0)
对我来说最明显的问题是你有一个无限循环;你不会在任何地方增加count
。
答案 4 :(得分:0)
在开始循环之前,您只生成一次问题编号。在向用户提问之前,您需要每次生成num_1和num_2。
在初始化之后,你永远不会真正更新计数值,所以你的循环将永远继续。
答案 5 :(得分:0)
Python是一种过程语言。它从上到下执行方法体中的语句。这一行:
num_1 = random.randint(1,10)
是一个赋值语句。 不将num_1
等同于随机过程以评估其价值;它通过调用random.randint(1,10)
来评估表达式,并将该值分配给num_1
一次。
您必须强制再次调用random.randint以获取另一个随机数,并且每当您想要更改num_1的值时,您必须有一个语句为num_1分配值。
答案 6 :(得分:0)
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:
您可以在此处使用"What is {}x{}?".format(num1, num2)
。
guess = int(input("What is " + str(num_1) + "x" + str(num_2) + "."))
answer = str(num_1*num_2)
这应该算正确的答案吗?应为correct += guess == answer
correct = guess == answer
你的意思是计算错误答案的数量吗? wrong += guess != answer
if guess == answer:
print("Correct!")
else wrong:
可能是语法错误else: #wrong
?
else wrong:
print("Sorry, the answer is", answer, ".")
这不是如何计算百分比。您应该使用correct*100/gamenumber
和dedent来匹配print()
result = correct/wrong
print("You got ", "%.1f"%result, "of the problems.")
main()
此外,您不会在任何地方递增count
。使用
for count in range(gamenumber):
而不是while
循环