yz7268913 发表于 2020-6-26 22:34:23

python小白做作业求助

帮忙看看哪里不对

#自动“无视”列表里的字符串并返回其他数字的求和结果

list1 = input ('请输入一个列表:')
sum1 = 0
for each in list1:

    if type(each) == str:
      continue
    else:
      sum1 = sum1 + each
print(sum1)

小甲鱼的铁粉 发表于 2020-6-26 22:38:07

each在list1里面是字符,所以所有的each都满足if的条件,都continue了
list1 = input ('请输入一个列表:')
sum1 = 0
for each in list1:
    if '0' <= each <= '9':
      sum1 += int(each)
print(sum1)

小甲鱼的铁粉 发表于 2020-6-26 22:39:20

所以只需要判断里面的字符是不是数字字符,然后再把数字字符变为数字就好了

Twilight6 发表于 2020-6-26 23:06:37



input 是接受用户输入并讲输入的数据转化为字符串,你要想弄成列表 应该要切割,而且这样做并不好,你要输入列表很规范才行

建议用 函数,然后将列表作为参数传入即可

这个就可行了代码:
list1 = input ('请输入一个列表(以英文逗号隔开列表内的元素):').split(',')# 通过切割字符串,来转为列表

for i in range(len(list1)):
    if list1.isdigit():
      list1 = int(list1)
    else:
      list1 = list1   # 因为我们输入字符串有带引号 而切割后成为字符串自己会在加上引号,所以把原有的引号去掉

# 下面的代码就可以正常运行了,你之前代码是错误的 就是 2 L 说的 因为 type 永远为 str
sum1 = 0
for each in list1:
    if type(each) == str:
      continue
    else:
      sum1 = sum1 + each
print(sum1)

yz7268913 发表于 2020-6-26 23:11:12

大佬真给力,自己一个人零基础学真的要劝退了,有人指点真的太好了。有事脑子转不过弯,自己知道input后面的是字符串类型的,就是没想到这个问题,谢谢
这是第一次发帖,没想到效果意外的好,给了我继续前进的强大动力{:10_256:}

Twilight6 发表于 2020-6-26 23:19:49

yz7268913 发表于 2020-6-26 23:11
大佬真给力,自己一个人零基础学真的要劝退了,有人指点真的太好了。有事脑子转不过弯,自己知道input后面 ...

加油!!! 把学编程当成一种兴趣!这样你就会有无穷的动力!

https://xxx.ilovefishc.com/forum/202005/27/132745rjvcvw1z2148jthd.gif
页: [1]
查看完整版本: python小白做作业求助