Python中bug
- 粗心問題
- 知識不熟
- 思路不清
movie = {
'妖貓傳':['黃軒','染谷將太'],
'無問西東':['章子怡','王力宏','祖峰'],
'超時空同居':['雷佳音','佟麗婭'],
}
name = input('你想查詢哪個演員?')
for i in movie:
actors = movie[i]
#取出字典的值
if name in actors:
print(name+'出演了電影'+i)
- 被動掉坑
Python給我們提供了一種異常處理的機制要门,可以在異常出現(xiàn)時即時捕獲誊薄,然后內(nèi)部消化掉,讓程序繼續(xù)運行识脆。即try...except...
#不用修改代碼,直接運行即可善已,嘗試多輸入幾次非數(shù)字
while True:
try:
age = int(input('你今年幾歲了灼捂?'))
break
except ValueError:
print('你輸入的不是數(shù)字!')
if age < 18:
print('不可以喝酒噢')
代碼要點有兩個:(1)因為不知道用戶什么時候才會輸入正確换团,所以設(shè)置while循環(huán)來接受輸入悉稠,只要用戶輸入不是數(shù)字就會一直循環(huán),輸入了數(shù)字就break跳出循環(huán)艘包。(2)使用try……except……語句的猛,當用戶輸錯的時候會給予提示。
num = [1,2,0,3]
for x in num:
try:
#嘗試執(zhí)行下列代碼
print (6/x)
#使用6除以num中的元素想虎,并打印
except ZeroDivisionError:
#除非發(fā)生ZeroDivisionError報錯卦尊,執(zhí)行下列代碼:
print('0是不能做除數(shù)的!')
#打印“0是不能做除數(shù)的舌厨!”
練習(xí):除法計算
print('\n歡迎使用除法計算器岂却!\n')
while True:
try:
x = input('請你輸入被除數(shù):')
y = input('請你輸入除數(shù):')
z = float(x)/float(y)
print(x,'/',y,'=',z)
break # 默認每次只計算一次,所以在這里寫了 break裙椭。
except ZeroDivisionError: # 當除數(shù)為0時躏哩,跳出提示,重新輸入揉燃。
print('0是不能做除數(shù)的扫尺!')
except ValueError: # 當除數(shù)或被除數(shù)中有一個無法轉(zhuǎn)換成浮點數(shù)時,跳出提示炊汤,重新輸入正驻。
print('除數(shù)和被除數(shù)都應(yīng)該是整值或浮點數(shù)弊攘!')
# 方式2:將兩個(或多個)異常放在一起,只要觸發(fā)其中一個拨拓,就執(zhí)行所包含的代碼肴颊。
# except(ZeroDivisionError,ValueError):
# print('你的輸入有誤氓栈,請重新輸入渣磷!')
# 方式3:常規(guī)錯誤的基類,假設(shè)不想提供很精細的提示授瘦,可以用這個語句響應(yīng)常規(guī)錯誤醋界。
# except Exception:
# print('你的輸入有誤,請重新輸入提完!')