Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python程序的TypeError(字符串格式为%d)_Python_Typeerror_Modulus - Fatal编程技术网

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.**

...
...