变量问题(Python)

时间:2017-09-18 16:36:09

标签: python-3.x

我是编程的新手,我遇到了这段代码的麻烦:

def supercalcx(a, b):
    n = a
    while a <= b:
        n = n * a
        a = a + 1
    print(n)

IDE给出了错误:“TypeError:不能将序列乘以'str'类型的非int”,但我确定输入是整数或浮点数,任何人都可以解释我的问题。谢谢!

2 个答案:

答案 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。您还可以引入tryexcept 尝试执行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))