做了一个生肖计算器,想要做到按q退出。但如果不是第一次询问年份时输入q并不会退出,如果第一次询问是输入q就会引发ValueError和NameError。
代码:
while True:
# 解决year不是数字或q导致的异常
try:
year = int(input('请输入公历年份或退出。'))
except ValueError as e:
if year == 'q':
break
else:
continue
finally:
print('')
非第一次询问时输入q运行结果:
请输入公历年份或退出。2022
生肖:虎
请输入公历年份或退出。q
请输入公历年份或退出。
第一次询问时输入q运行结果:
请输入公历年份或退出。q
Traceback (most recent call last):
File "C:/Users/xu zi yao/PycharmProjects/untitled1/生肖计算器.py", line 8, in <module>
year = int(input('请输入公历年份或退出。'))
ValueError: invalid literal for int() with base 10: 'q'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Users/xu zi yao/PycharmProjects/untitled1/生肖计算器.py", line 10, in <module>
if year == 'q':
NameError: name 'year' is not defined
我用了try-except-finally语句处理ValueError但没用,并且还会引发NameError,哪里错了吗?