我已经设定了编程数学测验的任务。基本代码是给我的,我设置了一系列挑战,使其更复杂。我检查最终得分是否在一定范围内的方法不能正常工作,说明是检查用户是否得分为66%或更高,如果他们这样做,那么程序应打印“做得好!”。如果用户得分在33%到66%之间,该程序应打印“你需要更多练习”,如果他们的得分低于33%,那么它将打印“请向你的数学老师寻求帮助”。然而,这不会发生,并且有一些奇怪的结果。任何帮助表示赞赏。
以下是代码:
from random import randint
while True:
correct = 0
userrange = int(input("How many questions would you like?\n"))
difficulty = input("Choose your difficulty: beginner, intermediate or advanced?\n")
if difficulty == "beginner":
no = 10
if difficulty == "intermediate":
no = 25
if difficulty == "advanced":
no = 100
qtype = input("Would you like to do addition, subtraction or multiplication?\n")
if qtype == "addition":
for i in range(userrange):
n1 = randint(1, no)
n2 = randint(1, no)
prod = n1 + n2
lo = "plus"
if qtype == "subtraction":
for i in range(userrange):
n1 = randint(1, no)
n2 = randint(1, no)
prod = n1 - n2
lo = "minus"
if qtype == "multiplication":
for i in range(userrange):
n1 = randint(1, no)
n2 = randint(1, no)
prod = n1 * n2
lo = "times"
ans = int(input("What's %d %s %d?" % (n1 ,lo ,n2)))
if ans == prod:
print ("That's right -- well done.\n")
correct = correct + 1
else:
print ("No, I'm afraid the answer is %d.\n" % prod)
print ("\nI asked you %d questions. You got %d of them right." %(userrange, correct))
if correct >= (userrange%3)*2:
print ("Well done!")
elif (userrange%3) < correct < (userrange%3)*2:
print ("You need more practice")
else:
print ("Please ask your maths teacher for help!")
try_again = int(input("\nPress 1 to try again, press 0 to exit.\n "))
if try_again == 0:
break
答案 0 :(得分:0)
你关闭......你只需要稍微移动你的循环定位,以便它能够捕捉问题的实际问题。
现在看来,你只是在你生成问题的部分循环。
我会在这里发布整个代码,因为有一些缩进更改以支持新循环:
from random import randint
while True:
correct = 0
userrange = int(input("How many questions would you like?\n"))
difficulty = input("Choose your difficulty: beginner, intermediate or advanced?\n")
if difficulty == "beginner":
no = 10
if difficulty == "intermediate":
no = 25
if difficulty == "advanced":
no = 100
qtype = input("Would you like to do addition, subtraction or multiplication?\n")
for i in range(userrange): # Move the loop to start here, instead of under each if / elif
n1 = randint(1, no) # We can go ahead and generate our random numbers here also
n2 = randint(1, no)
if qtype == "addition":
prod = n1 + n2
lo = "plus"
elif qtype == "subtraction":
prod = n1 - n2
lo = "minus"
elif qtype == "multiplication":
prod = n1 * n2
lo = "times"
ans = int(input("What's %d %s %d?" % (n1 ,lo ,n2))) # We also need to move the question into the loop, so that it is asked each time
if ans == prod:
print ("That's right -- well done.\n")
correct = correct + 1
else:
print ("No, I'm afraid the answer is %d.\n" % prod)
print ("\nI asked you %d questions. You got %d of them right." %(userrange, correct))
if correct >= (userrange%3)*2:
print ("Well done!")
elif (userrange%3) < correct < (userrange%3)*2:
print ("You need more practice")
else:
print ("Please ask your maths teacher for help!")
try_again = int(input("\nPress 1 to try again, press 0 to exit.\n "))
if try_again == 0:
break