Python學習06:for循環語句的介紹和實戰訓練

筆者:風起怨江南 出處:https://blog.csdn.net/JackMengJin 筆者原創,文章歡迎轉載,如果喜歡請點贊+關注,感謝支持!

 

目錄

一、for循環

1.0 模塊導入

1.1 for循環定義

1.2 range()函數的用法

1.3 for循環進行數值循環

二、for循環實戰訓練

2.1 計算1~1000的所有整數和

2.2 九九乘法表

2.3 兩行代碼查找替換3或5或7的倍數

2.4 打印G盤下s1文件裏的內容

2.5 組成不同的四位數

2.6 用戶登陸


for循環語句的介紹和實戰訓練

在之前的Python的學習中,已經掌握了字符串列表元組數字、還有if從句等等,但一直沒有具體將它們組合起來使用。在學完整個循環語句後,就可以寫出一個複雜的程序。本講主要內容是——for循環

一、for循環介紹

for 語句是 Python 中執行迭代的兩個語句之一,另一個語句是 while。Python 中for 循環用於遍歷一個迭代對象的所有元素。Python中的迭代:for、while、break、以及continue都是迭代語句。等多迭代相關的知識會在之後迭代學習中詳細說明。

1.0 模塊導入

在開始for循環前,先引入一個概念:模塊導入。

Python 模塊(Module),是一個 Python 文件,以 .py 結尾,包含了 Python 對象定義和Python語句。

模塊讓你能夠有邏輯地組織你的 Python 代碼段。

把相關的代碼分配到一個模塊裏能讓你的代碼更好用,更易懂。

模塊能定義函數,類和變量,模塊裏也能包含可執行的代碼。

在Python裏導入模塊通常用import + module,這裏以:

import somemodule

或者:

from somemodule import somefunction

再或者:

from somemodule import somefunction,anotherfunction,yetanotherfunction

再再或者:

from somemodule import *

如果確定要導入模塊中的一切時,採用最後一種方法。

如果兩個模塊都包含函數open(),則可以使用第一種方法導入這兩個模塊,並像下面調用函數:

import module1 
import module2
module1.open(...) module2.open(...)

還有一種方法:

在語句末尾添加as子句並指定別名:

import math as custom_name
print(custom_name.sqrt(4))
2.0

 導入特定函數並指定別名:

from math import sqrt as custom_name1
print(custom_name1(4))
2.0

  關於模塊導入這部本內容先點到爲止,後續單獨出Python模塊專講再詳細說明。                       

1.1 for循環定義

Python for循環可以遍歷任何序列的項目,如一個列表或者一個字符串。

在for循環格式中,迭代變量用於存放從序列類型變量中讀取出來的元素,所以一般不會在循環中對迭代變量手動賦值;代碼塊指的是具有相同縮進格式的多行代碼(和 while 一樣),由於和循環結構聯用,因此代碼塊又稱爲循環體。

  • for循環格式

for 迭代變量 in 字符串|列表|元組|字典|集合
    代碼塊

根據for循環格式和流程圖,以上一講元組的內容進行舉例:

tuple_fruits = ('apple','pear','peach','jujube','banana','cherry','hami melon','watermelon','litchi')
for fruit0 in tuple_fruits:
    print(fruit0)
apple
pear
peach
jujube
banana
cherry
hami melon
watermelon
litchi

可以從打印中看到,for循環遍歷了tuple_fruits元組裏所有的元素。

同樣的,對字符串,列表都可以進行for循環遍歷:

#for循環遍歷列表
list_names = ['Jack','Rose','Kobe','James','Jane','King','Bill','Jone','Mary','May','Tina']
for name0 in list_names:
    print(name0)
Jack
Rose
Kobe
James
Jane
King
Bill
Jone
Mary
May
Tina

也就是當用 for 循環遍歷 list 列表或者 tuple 元組時,其迭代變量會先後被賦值爲列表或元組中的每個元素並執行一次循環體。

 

1.2 range()函數的用法

range()函數是 Python 內置函數,用於生成一系列連續整數,多用於 for 循環中。

  • range()函數
python range() 函數可創建一個整數列表,一般用在 for 循環中。
range(start, stop[, step])

參數說明:

  • start: 計數從 start 開始。默認是從 0 開始。例如range(5)等價於range(0, 5);
  • stop: 計數到 stop 結束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5
  • step:步長,默認爲1。例如:range(0, 5) 等價於 range(0, 5, 1)

比如通過for循環對0到10之間的整數進行遍歷:

for number0 in range(0,11):
    print(number0)
0
1
2
3
4
5
6
7
8
9
10

可以看到這個示例程序中,range() 只是打印數字 1~10,因爲range() 函數的用法是:讓 Python 從指定的第一個值開始,一直數到指定的第二個值停止,但不包含第二個值(這裏爲 11)。

還需要注意的是,range()函數返回值類型爲range

print(type(range(1,20)))
<class 'range'>

如果想要得到 range() 函數創建的數字列表或數字元組,還需要藉助 list() 函數和,比如:

print(type(range(1,20)))
list_number = list(range(1,20))
print(type(list_number))
tuple_number = tuple(range(1,20))
print(type(tuple_number))
<class 'range'>
<class 'list'>
<class 'tuple'>

range()函數步長的用法,步長爲2:

#range()函數步長用法
for number in range(1,10,2):
    print(number)
1
3
5
7
9

1.3 for循環進行數值循環

用for循環進行數值循環在Python裏是最基本的應用。進行數值循環時,一般會用到range()函數。

  • 打印出24~73範圍之間所有的奇數:
#打印出24~73範圍內所有的奇數
range_number = range(23,74,2)
for number0 in range_number:
    print(number0)
23
25
27
29
31
33
35
37
39
41
43
45
47
49
51
53
55
57
59
61
63
65
67
69
71
73
  • 打印出1~100範圍以內的可以被三的整除的整數:
#打印出1~100範圍以內的可以被三的整除的整數
range_number1 = range(3,100,3)
for number1 in range_number1:
    print(number1)
3
6
9
12
15
18
21
24
27
30
33
36
39
42
45
48
51
54
57
60
63
66
69
72
75
78
81
84
87
90
93
96
99
  • 創建一個列表,其中包含1~10範圍內所有整數的平方(利用到列表相關知識):
#創建一個列表,其中包含1~10範圍內所有整數的平方:
list0 = [] #創建一個空列表
range_number0 = range(1,11) #聲明一個儲存數字範圍1~10的變量
for number0 in range_number0: 
    number_square0 = number0 ** 2 #聲明一個變量用來儲存迭代變量number0的平方
    list0.append(number_square0) #利用方法append動態地創建列表
print(list0)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

二、for循環實戰訓練

2.1 計算1~1000的所有整數和

#計算1~1000的所有整數的和
sum = 0 #定義求和的結果爲sum,初始爲0
for i in range(1,101): #rang(1000)產生一個1~100的整數範圍
    sum += i #相當於sum = sum + i進行累加
print(sum)
5050

2.2 九九乘法表

首先定義一個乘數x,即每一行中不變的那個數;定義一個被乘數y,即每一行的乘以乘數x,依次遞增1,但不超過x的數。

然後print被乘數、乘數、積的相關信息,當乘數增加1時,輸出一個換行:

#乘法表
for x in range(1,10): #x是乘數
    for y in range(1,x + 1): #y是被乘數
        print(x,"x",y,'=',x*y,'\t',end = '')
    print('')
1 x 1 = 1 	
2 x 1 = 2 	2 x 2 = 4 	
3 x 1 = 3 	3 x 2 = 6 	3 x 3 = 9 	
4 x 1 = 4 	4 x 2 = 8 	4 x 3 = 12 	4 x 4 = 16 	
5 x 1 = 5 	5 x 2 = 10 	5 x 3 = 15 	5 x 4 = 20 	5 x 5 = 25 	
6 x 1 = 6 	6 x 2 = 12 	6 x 3 = 18 	6 x 4 = 24 	6 x 5 = 30 	6 x 6 = 36 	
7 x 1 = 7 	7 x 2 = 14 	7 x 3 = 21 	7 x 4 = 28 	7 x 5 = 35 	7 x 6 = 42 	7 x 7 = 49 	
8 x 1 = 8 	8 x 2 = 16 	8 x 3 = 24 	8 x 4 = 32 	8 x 5 = 40 	8 x 6 = 48 	8 x 7 = 56 	8 x 8 = 64 	
9 x 1 = 9 	9 x 2 = 18 	9 x 3 = 27 	9 x 4 = 36 	9 x 5 = 45 	9 x 6 = 54 	9 x 7 = 63 	9 x 8 = 72 	9 x 9 = 81 	

通過函數參數看到print()函數裏面是默認換行的,具體換行參數是end="\n"。
如果我們把參數end="\n"換成end=''相當於去掉了換行符\n。

在windows系統中,\n表示換行,n是new line 的縮寫,\r表示回到行首,表示回車。
計算機還沒有出現之前種叫做電傳打字機的設備,每秒鐘可以打10個字符。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字符。要是在這0.2秒裏面,又有新的字符傳過來,那麼這個字符將丟失。 
於是研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字符。一個叫做“回車”,告訴打字機把打印頭定位在左邊界;另一個叫做“換行”,告訴打字機把紙向下移一行。 
這就是“換行”和“回車”的來歷。後來這兩個概念也就被般到了計算機上。那時存儲器很貴,一些科學家認爲在每行結尾加兩個字符太浪費了,加一個就可以。

於是,就出現了分歧:Unix 系統裏,每行結尾只有“<換行>”,即“\n”Windows系統裏面,每行結尾是“<回車><換行>”。

2.3 兩行代碼查找替換3或5或7的倍數

列出1~100的數字,若是3的倍數就用three代替,如果是5的倍數就用five代替, 是3又是5的倍數就用fifteen代替,若是7的倍數就用seven代替,若是3的倍數又是7的倍數就用twenty-one代替,若是5的倍數又是7的倍數就用thirty-five代替:

#列出1~100的數字,若是3的倍數就用three代替,如果是5的倍數就用five代替,
#即是3又是5的倍數就用fifteen代替,若是7的倍數就用seven代替,若是3的倍數又是7的倍數就用twenty-one代替,
#若是5的倍數又是7的倍數就用thirty-five代替
range_number = range(1,101)
for i in range_number:
    if i%3 == 0 and i%15 !=0 and i%21 != 0:
        print("three")
    elif i%5 == 0 and i%15 !=0 and i%35 != 0:
        print("five")
    elif i%3 == 0 and i%5 == 0:
        print("fifteen")
    elif i%7 == 0 and i%21 != 0 and i%35 != 0:
        print("seven")
    elif i%21 == 0:
        print("twenty-one")
    elif i%35 == 0:
        print("thirty-five")
    else:
        print(i)

1
2
three
4
five
three
seven
8
three
five
11
three
13
seven
fifteen
16
17
three
19
five
twenty-one
22
23
three
five
26
three
seven
29
fifteen
31
32
three
34
thirty-five
three
37
38
three
five
41
twenty-one
43
44
fifteen
46
47
three
seven
five
three
52
53
three
five
seven
three
58
59
fifteen
61
62
twenty-one
64
five
three
67
68
three
thirty-five
71
three
73
74
fifteen
76
seven
three
79
five
three
82
83
twenty-one
five
86
three
88
89
fifteen
seven
92
three
94
five
three
97
seven
three
five

2.4 打印G盤下s1文件裏的內容

#打印G盤下s1文件內容
for text0 in open("G:\\s1"):
    print(text0)
hostname KYLAND-SWITCH

user add admin level admin service console telnet ssh web authen-type password 202cb962ac59075b964b07152d234b70

!!

snmp-server enable

snmp-server community rw private

snmp-server community ro public

snmp-server v3-view add snmpv3 include 1.3.6.1.4.1.26067 ff ff ff ff

snmp-server enable traps

!!

authentication dot1x local

authentication telnet login local

authentication web login local

authentication ssh login local

!!

!#Vlan 1

vlan 1

!--

!$$1,26

!>Interface Ethernet1/1

port-mtu mtu 10056

port-security enable

!--

!>Interface Ethernet1/2

port-mtu mtu 10056

port-isolation

!--

!>Interface Ethernet1/3

port-mtu mtu 10056

!--

!>Interface Ethernet1/4

port-mtu mtu 10056

!--

!>Interface Ethernet1/5

port-mtu mtu 10056

!--

!>Interface Ethernet1/6

port-mtu mtu 10056

2.5 組成不同的四位數

有1,2,3,4,5,6,7七個數字,求這四個數字能生成多少個互不相同且無重複數字的四位數。

#有1,2,3,4,5,6,7七個數字,求這四個數字能生成多少個互不相同且無重複數字的四位數。
count = 0
for i in range(1,8):
    for x in range(1,8):
        for y in range(1, 8):
            for z in range(1, 8):
                if i != x and i != y and i != z:
                    count += 1
print(count)
1512

2.6 用戶登陸

用戶登陸需求:1.輸入用戶名和密碼;2.判斷用戶名和密碼是否正確(用戶名爲admin,密碼爲123);3.登陸僅有三次機會,超過3次會報錯。

#用戶登陸需求:
# 1.輸入用戶名和密碼;
# 2.判斷用戶名和密碼是否正確(用戶名爲admin,密碼爲123);
# 3.登陸僅有三次機會,超過3次會報錯
print('歡迎來到用戶登陸界面'.center(50,'*'))
#記錄登陸次數
try_count = 0
for i in range(3):
    #輸入用戶名和密碼
    user_input = input("請輸入用戶名:")
    pwd_input = input("請輸入密碼:")
    #每次輸入登陸次數加1
    try_count += 1
    #正確用戶存放在元組裏
    tuple_user = ('admin','123')
    if user_input == tuple_user[0] and pwd_input == tuple_user[1]:
        print('輸入正確,登陸成功!')
        #登陸成功則退出系統
        break
    else:
        print('輸入錯誤,請重新登陸!')
        #總的次數爲3,剩餘次數即爲(3-登陸次數)
        print('你還有%s次機會' %(3 - try_count))
else:
    print('很抱歉,三次機會已經用完,無法再繼續登陸!')

 

********************歡迎來到用戶登陸界面********************
請輸入用戶名:admin
請輸入密碼:122
輸入錯誤,請重新登陸!
你還有2次機會
請輸入用戶名:admin
請輸入密碼:124
輸入錯誤,請重新登陸!
你還有1次機會
請輸入用戶名:admin
請輸入密碼:123
輸入正確,登陸成功!
********************歡迎來到用戶登陸界面********************
請輸入用戶名:ad
請輸入密碼:123
輸入錯誤,請重新登陸!
你還有2次機會
請輸入用戶名:ad
請輸入密碼:123
輸入錯誤,請重新登陸!
你還有1次機會
請輸入用戶名:123
請輸入密碼:ads
輸入錯誤,請重新登陸!
你還有0次機會
很抱歉,三次機會已經用完,無法再繼續登陸!

更多for循環實例在後續學習中再詳細討論,下一講while循環的用法。


以上便是《Python學習06講》的所有內容,更多python學習請繼續關注我的博客——風起怨江南(傳送門,不定期更新,原創不易,如果喜歡請點贊和關注,謝謝大家的支持!

獲得更多免費的學習資料請添加微信公衆號——風起怨江南,謝謝大家的關注和支持!

 

 

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