我正在做exerciseism.io python测试用例,所以我是这种语言的新手。
传递导致整数的函数到max()函数是否存在问题?
Python 3
此代码不起作用:
错误消息是TypeError:' int'对象不可调用,
如果max函数没有恰好两个参数,则会出现错误消息
注意:无论我是否在max函数中包含或排除了(int),代码都会失败。
calculate_single函数返回整数列表的乘积。
数字是数字列表的列表。
...
largest = 0
for digitlist in digits:
largest = max((int)(calculate_single(digitlist)),largest)
return largest
def calculate_single (digitlist):
current = 1
for digit in digitlist:
current *= (int)(digit)
return current
此代码确实有效。我只是想知道为什么第一个没有用。
...
largest = 0
for digitlist in digits:
largest = calculate_single(digitlist,largest)
return largest
def calculate_single (digitlist,largest):
current = 1
for digit in digitlist:
current *= (int)(digit)
return max(current,largest)
答案 0 :(得分:0)
我尝试了两个版本的代码,似乎两者都很好。 版本1:
def calculate_single(digitlist, largest):
current = 1
for digit in digitlist:
current *= (int)(digit)
return max(current, largest)
def calculate(digits):
largest = 0
for digitlist in digits:
#print (largest)
largest = calculate_single(digitlist, largest)
#print (largest)
return largest
if __name__ == '__main__':
lst = [[2, 5, 7, 4.2, 3], [3.6, 6, 4, 2, 1], [5, 5, 5, 10,10]]
big = calculate(lst)
print(big)
版本2:
def calculate_single(digitlist):
current = 1
for digit in digitlist:
current *= (int)(digit)
return current
def calculate(digits):
largest = 0
for digitlist in digits:
#print (largest)
largest = max((calculate_single(digitlist)), largest)
#print (largest)
return largest
if __name__ == '__main__':
lst = [[2, 5, 7, 4.2, 3], [3.6, 6, 4, 2, 1], [5, 5, 5, 10,10]]
#lst = [2, 3, 5, 8]
big = calculate(lst)
print(big)
我认为主要的是数字列表是一个数字和数字列表是一个列表列表。因此,应将列表传递给calculate_single(),并将列表列表传递给calculate()。如果将列表传递给calculate(),则会引发TypeError。在两个版本中,无论使用/ out int()
,max()似乎都很好答案 1 :(得分:-2)
在python中投射到int
的方式是:int( )而不是(int)
。