int对象在条件函数中不可调用

时间:2019-07-16 17:28:02

标签: python int

这是一个接受整数的函数,尝试从中减去21,如果整数小于或等于21,则返回差值;如果大于21,则返回差值的两倍。

该代码在整数值小于或等于21之前一直工作良好。此外,它还显示错误integer object not callable

diff = 0
def diff21(n):
    if n <= 21:
        diff = 21 - n
    else:
        diff = 2(21 - n)
    return diff

预期结果:

diff21(21)-> 0

diff21(19)-> 2

diff21(23)-> 4

4 个答案:

答案 0 :(得分:0)

2(21-n)必须为2 *(21-n)

“不能调用int对象”的意思是这里的“ 2”不是您可以调用的函数。

答案 1 :(得分:0)

2 *(21 -n)是您所需要的。括号不是数学运算符。这样想,它在()内执行什么操作,然后再继续执行外部操作。可能是一个方法调用,例如func(1 + 2),然后func将3作为参数。

P.s。方法外部的差异将不同于方法内部的差异。

答案 2 :(得分:0)

出现此错误的原因是由于diff = 2(21 - n)。在大多数编码语言中,您需要指定操作。这主要是为了避免乘法/调用函数之间的歧义。

示例

def x(a):
    print("ok.")

现在x(a)意味着将调用该函数,而不是x * a

要更正您的代码,

diff = 0
def diff21(n):
    if n <= 21:
        diff = 21 - n
    else:
        diff = 2*(21 - n) #here
    return diff

答案 3 :(得分:0)

我最好的猜测是,当int n大于21时,括号内的结果将为负,这就是为什么会出现该错误的原因。您可能需要使用绝对值函数,然后乘以2。如下所示:

diff = 0

def diff21(n):
    if n <= 21:
    diff = 21 - n
    return diff

elif n > 21:
    diff = 2 * abs(21 - n)
    return diff
else:
    print("Input not valid")