请教python中有关异常处理的问题

try:
x=input('请输入被除数')
y=input('请输入除数')
z=float(x)/float(y)
except ZeroDivisionError:
print('除数不能为0')
except TypeError:
print('被除数和除数应为数值类型')
except NameError:
print('变量名不存在')
else:
print(x,'/',y,'=',z)

请输入被除数a
请输入除数3


ValueError Traceback (most recent call last)
in
2 x=input('请输入被除数')
3 y=input('请输入除数')
----> 4 z=float(x)/float(y)
5 except ZeroDivisionError:
6 print('除数不能为0')

ValueError: could not convert string to float: 'a'

请问,输入‘a’和3后,为什么没有执行excep TypeError语句,而是报错了?

用ValueError,float可以接受字符型参数,如float("1.1"),有帮助麻烦点个采纳【本回答右上角】,谢谢~~


try:
  x=input('请输入被除数')
  y=input('请输入除数')
  z=float(x)/float(y)
except ZeroDivisionError:
  print('除数不能为0')
except TypeError:
  print('被除数和除数应为数值类型')
except ValueError:
  print('被除数和除数转换失败')
except NameError:
  print('变量名不存在')
else:
  print(x,'/',y,'=',z)


输入‘a’错误是ValueError: could not convert string to float: 'a'
"a"字符串无法转换成float浮点数
是 ValueError 错误,不是 TypeError 错误,
你需要再添加
except ValueError:
print('输入的字符串无法转换成float浮点数')

try:
    x=input('请输入被除数')
    y=input('请输入除数')
    z=float(x)/float(y)
except ZeroDivisionError:
    print('除数不能为0')
except TypeError:
    print('被除数和除数应为数值类型')
except NameError:
    print('变量名不存在')
except ValueError:
    print('输入的字符串无法转换成float浮点数')
else:
    print(x,'/',y,'=',z)

img

错误提示说明的很清楚了,字符串a不能被转化为浮点数,所以报错。
如果你要让程序执行到除零异常,就老老实实输入0,不要输入非数字类型的值