Python入門:循環(huán)

五、循環(huán)

本章內容運行環(huán)境:Jupyter Notebook
本單元視頻鏈接:https://v.youku.com/v_show/id_XNDYyNTQ1MTcyMA==.html

5.1 for 循環(huán)

for item in list_of_items:
    pass
  • in后面,是一個列表
  • for -- in ---: 不要忘記這個:
  • 下一行要縮進,縮進幾個字符都可以,但是要保證上下文統一

這里需要注意,在Python中,縮進非常非常非常重要。

學過C或者MATLAB等其他編程語言的同學應該了解,一般是用{}來把函數包裹起來,系統通過判定函數開始,判定函數結束。

但是Python是通過縮進來判斷的,所以你的縮進必須一致。比如都用2個空格,或者都用4個空格。

nameList = ['Yangyang','Lindy','Alice','Leimei','Jack']
for eachName in nameList:
    print(eachName)
    
# 輸出:
# Yangyang
# Lindy
# Alice
# Leimei
# Jack
nameList = ['Yangyang','Lindy','Alice','Leimei','Jack']
for eachName in nameList:
    print(eachName, ', Hello')
    
# 輸出:
# Yangyang , Hello
# Lindy , Hello
# Alice , Hello
# Leimei , Hello
# Jack , Hello

看一下縮進的區(qū)別

nameList = ['Yangyang','Lindy','Alice','Leimei','Jack']
for eachName in nameList:
    print(eachName)
    print('Hello!')
    
# 輸出:
# Yangyang
# Hello!
# Lindy
# Hello!
# Alice
# Hello!
# Leimei
# Hello!
# Jack
# Hello!
nameList = ['Yangyang','Lindy','Alice','Leimei','Jack']
for eachName in nameList:
    print(eachName)
print('Hello!')

# 輸出:
# Yangyang
# Lindy
# Alice
# Leimei
# Jack
# Hello!

range()

在上一章列表里,我們學習了可以用range()函數生成列表

for i in range(5):  # 等價于range(0,5,1)
    print(i)
    
# 輸出:
0
1
2
3
4

練習:生成一個列表[0,1,4,9,16,25,36,49....]

squares = []
for i in range(10):
    squares.append(i**2)
print(squares)
# 輸出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

練習:生成九九乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print("{}*{}={}".format(i,j,i*j),end=" ")
    print("\n")
image

5.2 列表推導式

(大概了解就可以,現在沒辦法掌握,也沒關系)

拿剛剛求平方的代碼為例,我們原來是這么寫的

squares = []
for i in range(10):
    squares.append(i**2)
print(squares)

#輸出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

有了列表推導式,我們可以這么寫

squares = [i**2 for i in range(10)]
print(squares)

#輸出:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

兩者的輸出是一樣的,只是列表推導式更簡潔和高效

5.3 while 循環(huán)

while expression:
    pass

while循環(huán)的內容會一直循環(huán)執(zhí)行, 直到 expression 值為假(條件失效), 循環(huán)結束

count = 0
while (count < 9):
    print( 'the index is:', count)
    count += 1

#輸出:
the index is: 0
the index is: 1
the index is: 2
the index is: 3
the index is: 4
the index is: 5
the index is: 6
the index is: 7
the index is: 8

while循環(huán)常常用于你不確定,這個循環(huán),要循環(huán)多少次

用《Python編程:從入門到實踐,7.2.2節(jié)》中的一個例子:
不管用戶輸入什么,系統都會重復一遍,直到用戶輸入“quit”,程序結束

print("Tell me something, and I will repeat it back to you:")
message = ""
while message != "quit":
    message = input("Your input:")
    print("Output:",message)
# 輸出:
# Tell me something, and I will repeat it back to you:
# Your input:hi,I'm yangyang
# Output: hi,I'm yangyang
# Your input:quit
# Output: quit

避免無限循環(huán)

x = 1
while x <= 5:
    print(x)
    x += 1

如果你忘記了x += 1,這個程序就會陷入無限循環(huán)
可以通過Ctrl+C退出,也可以直接把軟件關了。。

5.4 break 和 continue

break:停止循環(huán)(直接退出了)
舉個例子:在一大堆中,找到,就結束(break)

shi_and_tu = ["士","士","士","士","士","士","士","土","士","士","士","士"]
for char in shi_and_tu:
    print(char)
    if char == "土":
        print("我找到土啦!")
        break

continue:跳過循環(huán)(本次退出,下次還來)
舉個例子:未滿18歲的輸出,超過18歲的,就跳過(continue)

ages = [16, 15, 23, 33, 67, 8, 10, 32]
for age in ages:
    if age >= 18:
        continue
    print(age)
    print("未達到18歲,不可以買酒")

5.5 實踐:輸出豆瓣首頁數據

【小練習】

給定整數序列, 求這個序列中子序列和的最大值

number = [-2, 11, 8, -4, -1, 16, 5, 0]
sum_n = []
for i in range(len(number)):
    sum_n.append(number[i])
    for j in range(i):
        sum_n.append(sum(number[j:i+1]))
print(max(sum_n))

【清洗豆瓣數據】

結合【3.11節(jié),字符串】的實踐,輸出豆瓣電影 Top 250,前25部電影詳情

思路:

  1. 先去網站上,把所有內容貼下來,保存到txt文件中
  2. 讀取txt文件
  3. 切割字符串
  4. 加入循環(huán),輸出前25項結果

注意:

  1. 注意txt文件的路徑,要么和代碼保存在一個路徑下面,要么把路徑寫正確
  2. for 循環(huán)別忘記冒號:
  3. 注意縮進,保持統一

參考代碼:

text = open('D:/Python/html_text.txt', 'rb')
text = text.read().decode('utf-8')
movies = text.split('class="grid_view\">')[1].split('<li>')  #movies此時是一個列表

for i in range(1,len(movies)):
    movie = movies[i]    # 把movies這個列表的值,依次取出
    title = movie.split('</span>')[0].split('>')[-1]
    rate = movie.split('v:average\">')[1].split('</span>')[0]
    number = movie.split('star')[1].split('<span>')[1].split('</span>')[0]
    quote = movie.split('inq')[1].split('>')[1].split('<')[0]
    year = movie.split(' <p class="">')[1].split('<br>')[1].split('&nbsp')[0].strip()
    print("{},《{}》,豆瓣評分{},{}。推薦理由:{}".format(year,title, rate, number, quote))
image

請在作業(yè)的最后一行輸出:

昵稱:第5節(jié)課作業(yè)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容