1 def calc(numbers):
2 ret = 0
3 for n in numbers:
4 ret = ret + n * n
5 return ret
6 print calc([4])
7 print calc((1,2,3,4))
8 print calc([1,2,3,4])
1 def sum(numbers):
2 my_sum = 0
3 for n in range(1, numbers + 1):
4 my_sum += n
5 return my_sum
6 print sum(2)
7 print sum((1,2,3,4))
8 print sum([1,2,3,4])
在sum函数执行时就会报错,初学python一直搞不懂函数参数的问题
在calc函数中的numbers类型就可以是list或者tuple
在sum函数中的numbers类型就不能是list或者tuple
这两个函数有什么区别吗?还是我写的有问题呢!
求科普!!!
我知道这个是range函数的问题,但是还是不太理解,是因为range函数的参数是int类型
第一个函数是做了一个循环,所以你的传入的参数需要是一个可迭代对象;第二个使用了range那就必须按人家规矩来,人家只接受int,那么就必须传int。你可以在接受参数后先assert isinstance(numbers, int),如果不符合条件就会抛AssertionError,当然你第一个函数其实也应该做判断
非常感谢!!!
range 里的数据类型要保持一致啊,你只丢个4进去,没得问题,就是range (1,4),问题出在,你丢进去个(1,2,3,4)就成了range(1,(1,2,3,4)),你让range怎么想?
非常感谢!!!