|
发表于 2020-9-5 14:22:43
|
显示全部楼层
本楼为最佳答案
本帖最后由 sunrise085 于 2020-9-5 14:29 编辑
第五行的 input 外没有写 eval,所以导致nums列表中第一个元素是数字,后面的元素是字符串,所以在total中进行相加的时候就报错了,报出的错误是int和str不能相加
但是你也不能再第五行的 input 外添加eval,因为你是将空字符串作为while循环的结束条件,而eval不能将空字符串作为参数,所以若直接在 input 外添加eval则会报错。
我帮你修改了一下
- def getnum():
- nums=[]
- temp=input('请输入数字(回车完成):') #在这里先不用eavl 因为下一行你要判断temp是否为空字符串,若用了eval,temp就不在是字符串了
- while temp !='':
- try:
- nums.append(eval(temp)) #把eval放在这里,若temp为空字符串则会抛出下面这个异常,不让其报错即可
- except SyntaxError:
- pass
- temp=input('请输入数字(回车完成):')
- else:
- return nums
- def total(nums):
- s=0
- for i in nums:
- s=s+i
- return s
- total(getnum())
复制代码
或者再简单一下
- def getnum():
- nums=[]
- while True:
- temp=input('请输入数字(回车完成):')
- try:
- nums.append(eval(temp))#把eval放在这里,若temp为空字符串则会抛出下面这个异常
- except SyntaxError:
- return nums #若上面抛出这个异常,则说明输入了空字符串,那么直接return nums即可
- def total(nums):
- s=0
- for i in nums:
- s=s+i
- return s
- total(getnum())
复制代码 |
|