##1
alist=['12','23','-','1.2','35Y','2.3','---']
lt1=[]
lt2=[]
sm=0
for i in alist:
try:
a=float(i)
except:
lt2.append(i)
else:
lt1.append(i)
sm+=a
print('+'.join(lt1)+'='+str(sm))
print('列表中{}不是数值型数据'.format(lt2))
##2
a=3
ntuple=(0,3,5,'hello',None,[1,2,3],3.6)
for i in range(8):
try:
b=ntuple[i]
c=3/b
except ZeroDivisionError:
print("除数不能为0!")
except TypeError as e:
if type(b)==str:
print("被除数为整数,除数不能为字符串!")
elif b is None:
print("被除数为整数,除数不能为空值!")
elif type(b)==list:
print("被除数为整数,除数不能为列表!")
else:
print(e)
except IndexError:
print("访问元组越界!当前索引值为{},超出索引最大值{}!".format(i,len(ntuple)))
##3 你的结果图是2 的,不知道你的结果截图
def check_grade(grade):
if grade<0 or grade>100:
raise ValueError ('成绩不在0~100之间')
stu_grade={'张三':88,'李四':101,'钱五':-10,'张三丰':98,'王五':90,'钱六':111,'王一':99,'小李':59,'张飞':-90}
for k,v in stu_grade.items():
try:
check_grade(v)
except Exception as e:
print(k,e)