首页 新闻 会员 周边

python函数参数类型问题

0
[已解决问题] 解决于 2017-10-11 16:03

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类型

insistYuan的主页 insistYuan | 初学一级 | 园豆:186
提问于:2017-09-26 15:36
< >
分享
最佳答案
0

第一个函数是做了一个循环,所以你的传入的参数需要是一个可迭代对象;第二个使用了range那就必须按人家规矩来,人家只接受int,那么就必须传int。你可以在接受参数后先assert isinstance(numbers, int),如果不符合条件就会抛AssertionError,当然你第一个函数其实也应该做判断

奖励园豆:5
北方姆Q | 小虾三级 |园豆:1118 | 2017-09-26 15:54

非常感谢!!!

insistYuan | 园豆:186 (初学一级) | 2017-09-27 11:20
其他回答(1)
0

range 里的数据类型要保持一致啊,你只丢个4进去,没得问题,就是range (1,4),问题出在,你丢进去个(1,2,3,4)就成了range(1,(1,2,3,4)),你让range怎么想?

shisanshu | 园豆:202 (菜鸟二级) | 2017-09-26 16:06

非常感谢!!!

支持(0) 反对(0) insistYuan | 园豆:186 (初学一级) | 2017-09-27 11:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册