我是编程的新手,我遇到了这段代码的麻烦:
def supercalcx(a, b):
n = a
while a <= b:
n = n * a
a = a + 1
print(n)
IDE给出了错误:“TypeError:不能将序列乘以'str'类型的非int”,但我确定输入是整数或浮点数,任何人都可以解释我的问题。谢谢!
答案 0 :(得分:0)
此功能有效:
>>> def supercalcx(a, b):
... n = a
... while a <= b:
... n = n * a
... a = a + 1
... print(n)
...
>>> supercalcx(2, 4)
48
答案 1 :(得分:0)
您的函数不会在数据类型之间进行转换。一个非常粗略的方法是执行以下操作:
def supercalcx(a,b):
n = int(a)
a = int(a)
b = int(b)
while a <= b:
n = n * a
a = a + 1
print(n)
一些改进代码的建议:
函数应该很少有print()
函数;相反,请使用return
关键字。您可以将a = a + 1
更改为a += 1
,将n = n * a
更改为n *= a
。您还可以引入try
和except
尝试执行try
下的任何选项卡,如果某些内容引发except
指定的错误阻止,然后它将执行except
下的任何选项卡。下面有一些改进的版本:
def supercalcx(a, b):
try:
n = int(a)
a = int(a)
b = int(b)
except ValueError:
return "Unable to convert to integers!"
while a <= b:
n *= a
a += 1
return n
print(supercalcx("1", 2))
print(supercalcx(1, 2))