Python中bug
- 粗心问题
- 知识不熟
- 思路不清
movie = {
'妖猫传':['黄轩','染谷将太'],
'无问西东':['章子怡','王力宏','祖峰'],
'超时空同居':['雷佳音','佟丽娅'],
}
name = input('你想查询哪个演员?')
for i in movie:
actors = movie[i]
#取出字典的值
if name in actors:
print(name+'出演了电影'+i)
- 被动掉坑
Python给我们提供了一种异常处理的机制,可以在异常出现时即时捕获,然后内部消化掉,让程序继续运行。即try...except...
#不用修改代码,直接运行即可,尝试多输入几次非数字
while True:
try:
age = int(input('你今年几岁了?'))
break
except ValueError:
print('你输入的不是数字!')
if age < 18:
print('不可以喝酒噢')
代码要点有两个:(1)因为不知道用户什么时候才会输入正确,所以设置while循环来接受输入,只要用户输入不是数字就会一直循环,输入了数字就break跳出循环。(2)使用try……except……语句,当用户输错的时候会给予提示。
num = [1,2,0,3]
for x in num:
try:
#尝试执行下列代码
print (6/x)
#使用6除以num中的元素,并打印
except ZeroDivisionError:
#除非发生ZeroDivisionError报错,执行下列代码:
print('0是不能做除数的!')
#打印“0是不能做除数的!”
练习:除法计算
print('\n欢迎使用除法计算器!\n')
while True:
try:
x = input('请你输入被除数:')
y = input('请你输入除数:')
z = float(x)/float(y)
print(x,'/',y,'=',z)
break # 默认每次只计算一次,所以在这里写了 break。
except ZeroDivisionError: # 当除数为0时,跳出提示,重新输入。
print('0是不能做除数的!')
except ValueError: # 当除数或被除数中有一个无法转换成浮点数时,跳出提示,重新输入。
print('除数和被除数都应该是整值或浮点数!')
# 方式2:将两个(或多个)异常放在一起,只要触发其中一个,就执行所包含的代码。
# except(ZeroDivisionError,ValueError):
# print('你的输入有误,请重新输入!')
# 方式3:常规错误的基类,假设不想提供很精细的提示,可以用这个语句响应常规错误。
# except Exception:
# print('你的输入有误,请重新输入!')