【发布时间】:2022-08-04 08:12:42
【问题描述】:
我的程序按照我希望的方式工作,除非它到达终点并输出分数。我希望它输出正确答案的分数(假设它满分 10,因为它应该提示 10 个问题)。但是,它从不考虑在推断分数时提出的第一个问题。例如,如果我答对了所有十道题,我只会得到 9 分。当我答错第一道题时,也会有问题。如果我的第一个问题不正确而所有其他问题都正确,我的分数为零。也许这与我的 while num_of_questions <= 8 循环运行我的程序十次这一事实有关,而我认为如果我有一个十代替八次,它会运行十次?
import random
def main():
ten_questions()
def get_level():
while True:
try:
level_input = int(input(\"Level: \"))
if level_input in [1,2,3]:
return level_input
except:
pass
def integer_generator(level):
if level == 1:
x = random.randint(0,9)
y = random.randint(0,9)
elif level == 2:
x = random.randint(10, 99)
y = random.randint(10, 99)
else:
x = random.randint(100, 999)
y = random.randint(100, 999)
return x, y
def question_generator(x, y):
real_answer = x + y
wrong_counter = 0
while True:
try:
answer_given = input(str(x) + \" + \" + str(y) + \" = \")
if int(answer_given) == real_answer and wrong_counter == 0:
return True
elif int(answer_given) == real_answer and wrong_counter != 0:
break
else:
while wrong_counter < 2:
print(\"EEE\")
wrong_counter +=1
break
else:
print(str(x) + \" + \" + str(y) + \" = \" + str(real_answer))
print(\"False, that was last attempt\")
break
except:
print(\"EEE\")
pass
def ten_questions():
num_of_questions = 0
total_correct_answers = 0
my_level = get_level()
correct_answers = question_generator(*integer_generator(my_level))
while num_of_questions <= 8:
question_generator(*integer_generator(my_level))
num_of_questions +=1
if correct_answers == True:
total_correct_answers +=1
print(\"Score: \" + str(total_correct_answers))
if __name__ == \"__main__\":
main()
-
循环之前
correct_answers = question_generator(...)。在循环中question_generator(...)您忽略了该函数的返回。
标签: python while-loop return break