1、for ... in ... 循環語句
for 循環的格式如下:
下面用例子來講解一下:
1-1、遍歷列表
a=['七七','卡西','延君']
for i in a:
print(i)
注意:i 只是一個變量名,可以叫爲 a,b,不一定爲 i,i 只是存儲遍歷列表出來的變量而已。
1-2、遍歷字典
1-2-1、遍歷字典的鍵和值
d={1:'七七',2:'卡西',3:'延君'}
for a,b in d.items():
print('字典的鍵爲:'+str(a)+'\字典的值爲:'+str(b))
# 結果爲:
字典的鍵爲:1、字典的值爲:七七
字典的鍵爲:2、字典的值爲:卡西
字典的鍵爲:3、字典的值爲:延君
注意:這裏的 items() 是一個方法,Python 字典 items() 方法以列表返回可遍歷的(鍵, 值) 元組數組。我們用 for 遍歷字典後,將字典的鍵、值分別用變量 a、b 存儲。
1-2-2、遍歷字典的鍵(方法一)
d={1:'七七',2:'卡西',3:'延君'}
for i in d:
print(i)
# 結果爲 1,2,3
1-2-3、遍歷字典的鍵(方法二)
d={1:'七七',2:'卡西',3:'延君'}
for i in d.keys():
print(i)
# 結果爲 1,2,3
注意:這裏的 keys() 是一個方法,我們用 for 遍歷字典後,將字典的鍵用變量 i 存儲。
1-2-4、遍歷字典的值
d={1:'七七',2:'卡西',3:'延君'}
for i in d.values():
print(i)
# 結果爲七七、卡西、延君
注意:這裏的 values() 是一個方法,我們用 for 遍歷字典後,將字典的值用變量 i 存儲。
1-3、range() 函數
1-3-1、不帶間隔數
作用:生成了一個【取頭不取尾】的整數序列
我們用 for 和 range() 函數結合起來的例子看 range() 的效果:
for i in range(1,3):
print(i)
# 結果爲 1、2
有點類似我們的列表(左取右不取),range() 函數裏面的爲“取頭不取尾”。
1-3-2、帶間隔數
for i in range(1,10,3):
print(i)
# 結果爲 1、4、7
解析:這裏的代碼是從1數到9(取頭不取尾),取值的間隔爲3
2、while 循環語句
2-1、常見使用
a=1
while a<5:
print(a*5)
a=a+1
解析:我們這裏定義了一個 a 並賦值 1,while 循環的判斷語句是 a<5,當符合條件時,執行循環內的語句。
注意:
- 我們循環內需要讓 a 的值改變,不然 a 一直等於 1,語句將會進入死循環;
- print(a*5) 只是打印了 a 乘以 5 的值,但實際上沒有改變 a 的值。
2-2、while ... else ... 語句
a=input('七七怎樣?')
while a == '七七真可愛':
print('輸入正確~')
else:
print('輸入錯誤~')
解析:如果我們輸入的內容不等於 “七七真可愛” ,則打印 “輸入錯誤~” ,否則打印 “輸入正確~”。
2-3、避免進入無限循環
以下爲危險操作,請勿模仿!!!
while True:
print('已經進入死循環')
#解析:由於第 1 行的 while True 代碼是一定會執行,也就是while 1,所以一直打印出‘已經進入死循環’這#句話。
#如何避免:
#代碼區使用 exit() ,在運行終端輸入該代碼,強行結束運行
#終端區按 ctrl+c,強行結束運行
#代碼區使用 break 語句(如下),當打印完‘已經進入死循環’這語句後,會直接跳出循環
#正確操作:
while True:
print('已經進入死循環')
break
3、習題
3-1、while 循環(01)
a=1
while '卡西真可愛':
a=0
a=a*2
print(a)
a+=1
if a > 10:
break
else:
continue
終端結果會有幾行?
A.2行 B.3行 C.4行 D.死循環
答案:D
解析:
- 非空字符串,布爾值爲True,所以開始循環。
- 若無第三行
- 第一次循環,a=a*2,結果使a的值更新爲2並打印出來,再加1爲3,小於10,else語句生效,返回循環;
- 第二次循環,a=a*2,結果使a的值更新爲6並打印出來,再加1爲7,小於10,else語句生效,返回循環;
- 第三次循環,a=a*2,結果使a的值更新爲14並打印出來,再加1爲15,大於10,if語句生效,跳出循環。
- 但是第三行有一句a=0,每次循環都會重新將a賦值爲0,所以if條件無法執行,會陷入死循環
3-2、while 循環(02)
題目:小明報名了python課程,加加說可以根據自己喜歡的符號來選擇助教,請編寫一個程序,讓小明可以根據自己選擇的符號知道自己的助教是誰~如果沒有這個符號,要輸出‘沒有這個符號的助教哦’
teachers = {
'加加':['草莓','櫻桃','西瓜','熊貓','菠蘿'],
'卡西':['星星','樹葉','向日葵'],
'延君':['小丑','猴子','小鬼'],
}
答案:
teachers = {
'加加':['草莓','櫻桃','西瓜','熊貓','菠蘿'],
'卡西':['星星','樹葉','向日葵'],
'延君':['小丑','猴子','小鬼'],
}
while True:
symbol_check = input('你想查詢哪個符號?')
for teacher in teachers:
symbol = teachers[teacher]
if symbol_check in symbol:
print( '小明的助教是' + teacher)
break
else:
print('沒有這個符號的助教哦')
continue
3-3、for 循環
題目:如果想讓下面的代碼輸入不在列表明星時,提示:“該演員無法查詢”,並開始下一次查詢,直到輸入列表內明星,並正確打印輸出相對應的電影。
movies = {
'妖貓傳':['黃軒','染谷將太'],
'無問西東':['章子怡','王力宏','祖峯'],
'超時空同居':['雷佳音','佟麗婭'],
}
actor = input('你想查詢哪個演員?')
for movie in movies:
actors = movies[movie]
if actor in actors:
print(actor + '出演了電影' + movie)
答案:
from sys import exit
v = {
'妖貓傳':['黃軒','染谷將太'],
'無問西東':['章子怡','王力宏','祖峯'],
'超時空同居':['雷佳音','佟麗婭']
}
while True:
t = input('你想查詢哪個演員?')
for i in v:#i指的是鍵名,電影名字
if t in v[i]: #v[i]是鍵值,所有的演員名字
print(t+'出演了電影'+i)
exit()
print('查無此人')
3-4、pop() 函數
題目:列表 Marvel=['鋼鐵俠','美國隊長','奇異博士','蝙蝠俠','蜘蛛俠']中 除了蝙蝠俠都是漫威英雄,現在請你把DC英雄蝙蝠俠從 列表Marvel中刪除,並放到列表DC中去(提示:用pop()函數和append()函數)。
答案:
Marvel=['鋼鐵俠','美國隊長','奇異博士','蝙蝠俠','蜘蛛俠']
DC=[]
a=Marvel.pop(3)
DC.append(a)
print(Marvel)
print(DC)
結果:
解析:pop()函數可以刪除列表中的元素,並返回這個元素的值。append()函數可以給列表添加元素。