我的任务是生成一个代码来问候用户并询问他们的名字,将他们的名字存储为username
。然后生成2个随机数和一个运算。问题被询问给用户。之后,它会检查用户的答案是否正确,也会将1
添加到questionsAsked
中。如果正确,1
将添加到correctAnswers
。如果不正确,则会告诉用户正确答案。程序应该在10个问题之后结束(因此while questionAsked > 11
)。用户应该得到他们的username
以及他们答对了多少个问题。在
我的问题是,当我运行代码时,它会出现NameError: name 'questionAsked' is not defined
。我正在努力想办法定义questionAsked
。在
以下是我目前所做的:
import random
import math
def test():
Username=input("What is your name?")
print ("Welcome"+Username+" to the Arithmetic quiz")
num1=random.randint(1, 10)
num2=random.randint(1, 10)
Ops = ['+','-','*']
Operation = random.choice(ops)
num3=int(eval(str(num1) + operation + str(num2)))
print("What is" +" "+str(num1) + operation +str (num2,"?"))
userAnswer= int(input("Your answer:"))
if userAnswer != num3:
print("Incorrect. The right answer is"+" "+(num3))
return False
else:
print("correct")
return True
correctAnswers=0
questionsAsked=0
while questionAsked > 11:
if test () == True:
questionsAnswered +=1
correctAnswers +=1
if test () == False:
questionsAnswered +=1
您有一个测试
while questionAsked > 11
,但不要在代码中的任何其他地方使用该名称。你肯定从来没有定义过它。您可能想测试questionsAsked
(使用s
)来代替。在不过,还有其他问题。当你问的问题少于11个而不是更多时,循环应该继续。您还调用
test()
两次,每次循环只应调用一次。在循环中,您使用了questionsAnswered
,但从来没有定义过,也没有增加questionsAsked
;您可能想增加后者:现在
test()
只被称为一次。你的两个分支都增加了questionsAsked
,我把它移出了测试,现在你不再需要检查测试是否失败了。在因为从0开始计数,所以您需要测试}。在
< 10
,而不是{代替
^{pr2}$while
循环,可以使用range()
函数使用for
循环:现在,
for
循环负责计算所问问题的数量,您不再需要手动增加变量。在接下来,您需要将
username
处理移出test()
函数。你不需要每次都询问用户的名字。在循环之前询问用户名一次,这样您就可以在10个问题之后访问用户名:您也需要注意},但尝试将它们用作}。这行不通,你需要在任何地方都使用相同的大小写来引用这些名字。Python style guide建议您对本地名称使用所有带下划线的小写字母,以区别于类名(类名使用CamelCase、大写字母的首字母和单词之间没有空格)。在
test()
函数中的名称;您定义了名称Ops
和{ops
和{下一个问题:您使用的
str()
有两个参数:这行不通;双参数
str()
调用是为了将字节解码为Unicode字符串。在不要使用字符串连接,只需将值作为单独的参数传递给
print()
。函数将负责将内容转换为字符串,并为您在单独的参数之间添加空格:现在在}之间会有一个空格,但这不是什么大问题。您可以使用^{} method 创建一个带有占位符的字符串,其中为您填充了方法的参数,再次自动转换为字符串。这样可以更直接地控制空间:
num2
和{这三个参数按顺序放置在每个
{}
出现的地方。在变量名和缩进有很多差异。记住Python区分大小写。顺便说一句,while循环中的条件将导致程序不询问任何问题。在
例如,您创建了一个名为
Ops
的操作列表,然后使用random模块从ops
中选择一个操作。Python将不可避免地抛出一个错误,因为ops
实际上没有定义。相反,您应该使用Ops
,因为这是您实际声明的变量,带有大写字母。Python还是区分大小写的。在同样,Python识别}之间的区别。这是一个或另一个,所以选择一个名字并保持一致。在
questionAsked
和{相关问题 更多 >
编程相关推荐