第 5 關、消滅該死的重複(上)

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()函數可以給列表添加元素。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章