Python程序的TypeError(字符串格式为%d)
我的程序:一个数学测验,提示用户选择难度(初学者、中级、高级),然后根据他们的选择生成五个问题(随机) 在我开始添加注释和文档字符串之前,它一直工作得很好(很抱歉,如果在混乱中很难阅读,讲师需要大量的注释。) 我为代码的混乱提前道歉(讲师需要大量的评论)Python程序的TypeError(字符串格式为%d),python,typeerror,modulus,Python,Typeerror,Modulus,我的程序:一个数学测验,提示用户选择难度(初学者、中级、高级),然后根据他们的选择生成五个问题(随机) 在我开始添加注释和文档字符串之前,它一直工作得很好(很抱歉,如果在混乱中很难阅读,讲师需要大量的注释。) 我为代码的混乱提前道歉(讲师需要大量的评论) #导入randint以便程序可以生成随机数 从随机导入randint ''' 将变量选项设置为用户输入的选择级别的值 他们想这样做。然后,我们创建了一个等于初学者的if语句 (供用户输入)。范围是该问题的数量 特殊类型的问题(加法、乘法等) n
#导入randint以便程序可以生成随机数
从随机导入randint
'''
将变量选项设置为用户输入的选择级别的值
他们想这样做。然后,我们创建了一个等于初学者的if语句
(供用户输入)。范围是该问题的数量
特殊类型的问题(加法、乘法等)
n1是一个从1到10的随机数,程序选择2
变量“sum”设置为n1加n2的值
'''
选择=输入(“选择级别:初级、中级或高级?”)。低级()
如果选择==“初学者”:
正确=0
对于范围(2)中的i:
n1=randint(1,10)
n2=randint(1,10)
#将变量“ans”设置为输入“What is(n1)plus(n2)”
#%d=程序为问题生成一个随机数
#correct=correct+1->为用户的总分增加一分
ans=输入(“什么是%d加%d?”%(n1,n2))
如果int(ans)=和:
打印(“正确,做得好!\n”)
正确=正确+1
其他:
print(“不,这不正确。答案是%d.\n”%sum)###<这里是我得到错误消息的地方。**
对于范围(3)中的i:
n1=randint(1,10)
n2=randint(1,10)
差值=n1-n2
ans=输入(“什么是%d减去%d?”%(n1,n2))
如果int(ans)=差值:
打印(“正确,做得好!\n”)
正确=正确+1
其他:
打印(“不,不正确。答案是%d。\n”%d)
#这是程序计算分数并告诉用户的地方
#“做得好”、“需要更多练习”或“请老师帮助”。
如果(正确/5>=2/3):
打印(“做得好!”)
elif(正确/5>=1/3):
打印(“你需要更多的练习。”)
其他:
打印(“联系讲师”)
如果选项==“中间”:
正确=0
对于范围(3)中的i:
n1=randint(1,25)
n2=randint(1,25)
积=n1*n2
ans=输入(“什么是%d乘以%d?”%(n1,n2))
如果int(ans)=产品:
打印(“正确,做得好!\n”)
正确=正确+1
其他:
打印(“不,不正确。答案是%d。\n”%product)
对于范围(2)中的i:
n1=randint(1,25)
n2=randint(1,25)
商=n1/n2
#对于本节,我们必须使用浮点输入类型和“round”,以便
#程序将输入一个小数点,并告诉用户四舍五入。
ans=浮点(输入(“什么是%d除以%d?(小数点后两位四舍五入)”\
%(n1,n2)))
如果舍入(ans,2)=舍入(商,2):
打印(“正确,做得好!\n”)
正确=正确+1
其他:
打印(“不,不正确。答案是%f。\n”%quotient)
如果(正确/5>=2/3):
打印(“做得好!”)
elif(正确/5>=1/3):
打印(“你需要更多的练习。”)
其他:
打印(“联系讲师”)
如果选项==“高级”:
正确=0
对于范围(3)中的i:
n1=randint(11,20)
n2=randint(1,10)
模数=n1%n2
ans=输入(“什么是%d模数%d?”%(n1,n2))
如果int(ans)=模数:
打印(“正确,做得好!\n”)
其他:
打印(“不,不正确。答案是%d。\n”%modules)
对于范围(2)中的i:
n1=randint(1,10)
n2=randint(1,10)
指数=n1**n2
ans=输入(“与%d的幂相比%d是多少?”\
答案不需要逗号)“%(n1,n2))
如果int(ans)=指数:
打印(“正确,做得好!\n”)
其他:
打印(“不,那不正确。答案是%d。\n)”
如果(正确/5>=2/3):
打印(“做得好!”)
elif(正确/5>=1/3):
打印(“你需要更多的练习。”)
其他:
打印(“联系讲师”)
我收到此类型错误(在第一条else print语句中):
我不确定我在添加注释时是否弄错了什么,但我似乎无法弄清楚它是什么。您正在使用
sum
作为变量名,但这隐藏了一个内置函数。将变量名更改为其他名称,错误就会消失
使用if int(ans)=sum:
,您所做的只是将int(ans)
与sum
函数本身进行比较,而不是将传递某些数字时返回的结果进行比较。如果int(ans)=sum(n1,n2):,则需要执行类似于的操作。不过,您可能应该做的是将此总和保存到一个变量(未命名为sum
),然后用它替换所有的sum
。例如:
_sum = sum(n1, n2)
...
if int(ans) == _sum:
...
print("No it's not correct. The answer is %d.\n" % _sum)
您使用了一个名为sum
的变量,但没有定义它。Python有一个名为sum
的内置函数,您确实应该更改变量名,这样您就不会遇到这种类型的问题。Python尝试将该函数用于%d
计算。将其重命名为my_sum
,您将得到不同的错误A未定义。然后您可以修复它!您需要更改一些值
一致
ans = input("What's %d plus %d?" % (n1, n2))
加
语法错误和类型错误是不同的。如果你得到TypeError,不要说“语法错误”!你是在代码中添加了这两个星号来为我们突出显示它,还是真的ans = input("What's %d plus %d?" % (n1, n2))
result = n1 + n2
if int(ans) == result:
print("That's correct, well done!\n")
correct = correct + 1
else:
print("No it's not correct. The answer is %d.\n" % result) # Here is where I'm getting the error message.**
...
...