|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问几个小问题,实在是小白,多担待
做第16课下面这道题的时候遇到一些问题
视频中我们说 sum() 这个BIF有个缺陷,就是如果参数里有字符串类型的话就会报错,请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果
一、
代码开头我开头尝试用input输入一个列表,然后再剔除列表里的字符串,最后求和。
但是input输入的东西都被认定为字符串
x=input('请输入一个列表')
我输入[456,65,55,56,4,'ssd',455,'ssa']
1.此时x是个字符串,无法用列表的命令进行操作。想着转换一下但是用list命令转换就全散了,如果我想直接输入一个列表或者元组,我该用什么命令替代input啊。
2.我尝试输入456,65,55,56,4,'ssd',455,'ssa'后,用split命令将字符串拆分,但是数字拆出来还是字符串,我尝试用int转换一下但是里面转换字符串会报错,
有什么方法批量把列表里的字符串数字转换为int类型啊?
二、
后来我又想着用切片的方法剔除字符串,这样列表元组都可以用
x=[56,84,56,23,15,'sj',665,'sjx']
for each in x:
if type(each)==str:
c=x.index(each)
x=x[:c],x[(c+1):]
print(sum(x))
写了个这玩意,报错如下:
Traceback (most recent call last):
File "2.py", line 5, in <module>
c=x.index(each)
ValueError: tuple.index(x): x not in tuple
请大佬指正
ps:这道题课后答案我看了,我只是想把自己一开始的思路写出来,另外刚开会员,没领到6月的鱼币,就不设悬赏了。。。见谅。。。
有什么方法批量把列表里的字符串数字转换为int类型啊?
可以这样,但是这样只能把是数字的字符串筛选出来 存到 int_list 中
temp = ['125','13','45','4231','13']
int_list = [int(i) for i in temp if i.isdigit()]
但这下面的这个代码可以达到你的第一个要求:
x = input('请输入一个列表:')
temp = x[1:-1].split(',')
for i in range(len(temp)):
if temp[i].isdigit():
temp[i] = int(temp[i])
else:
temp[i] = temp[i][1:-1]
print(temp)
这样在改改就能达到你的目的,但是是无视参数里非数值类型的字符串嘿嘿:x = input('请输入一个列表:')
temp = x[1:-1].split(',')
sum = 0
for i in range(len(temp)):
if temp[i].isdigit():
sum += int(temp[i])
print(sum)
第二个问题你只要把逗号改成 + 号即可了:x=[56,84,56,23,15,'sj',665,'sjx']
for each in x:
if type(each)==str:
c=x.index(each)
x=x[:c]+x[(c+1):]
print(sum(x))
逗号是元组的标志哈~
|
|