输出结果:
我自己写的代码:
/usr/bin/env python
# _*_ coding:utf-8 _*_
import re
try:
alist = ['12', '23', '-', '1.2', '35Y', '2.3', '---']
total = 0
errors = []
digits = re.compile(r'-?\d+\.?\d*e?-?\d*?') # 所有数值型数据
letters = re.compile(r'[A-Za-z]') # 所有字母
for i, v in enumerate(alist):
# 查找包含数字不包含字母的项
number = digits.search(v)
letter = letters.search(v)
if number and not letter:
continue
# 不符合数值型数据的从原列表弹出
errors.append(alist.pop(i))
print(*alist, sep='+', end='=')
# 将字符串转换成浮点型数据计算总和
alist = list(map(float, alist))
total = sum(alist)
print(total)
except TypeError:
pass # 无操作
else:
# 如果无异常,打印
print('列表中', errors, '不是数值型数据!')
运行结果跟题目给的一样
上面是我自己写的,请问有没有更好的方法把代码量减小呢?
想知道参考代码11行是怎么做的