这是一个接受整数的函数,尝试从中减去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
答案 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")