目錄
一、for循環語法
1 2 | for i in range ( 10 ): print (i) |
上面代碼會從0-9,共循環10次,這個range(10),其實是相當于產生一個從0-9的列表,每循環一次,就會把列表里的下一個元素取出來給臨時變量i。
執行結果:
二、循環的使用
2.1、循環猜年齡
需求:最多允許猜三次,猜對了就退出程序
1 2 3 4 5 6 7 8 9 | age = 38 for i in range ( 3 ): guess = int ( input ( "猜測的年齡:" )) if (guess>age): print ( "猜大了" ) elif (guess<age): print ( "猜小了" ) else : print ( "猜對了" ) |
2.2、打印奇偶數
打印50-100間的奇數
1 2 3 | for i in range ( 50 , 100 ): if (i % 2 = = 1 ): print (i) |
打印偶數
1 2 3 | for i in range ( 50 , 100 ): if (i % 2 = = 0 ): print (i) |
2.3、循環嵌套
這里寫了一個不是很靈活的冒泡排序,本質也是使用嵌套循環去完成的
1 2 3 4 5 6 7 8 | number = [ 6 , 7 , 4 , 2 , 1 , 3 , 5 ] for i in range ( 5 ): for j in range ( 6 ): if (number[j] > number[j + 1 ]): tmp = number[j] number[j] = number[j + 1 ] number[j + 1 ] = tmp print (number) |
三、break & continue
我們這里寫一個打印樓層的小程序
需求:一棟樓有5層,每層2間房,要求把本樓所有的房間號都打印一遍。
1 2 3 | for i in range ( 1 , 6 ): for j in range ( 1 , 3 ): print (f "{i}層-{i}0{j}室" ) |
我們現在需求改一下,遇到第三層時,不打印任何房間號,其他層都打印
3.1、continue
continue的語法作用是,只要程序一遇到continue,本次循環就不繼續了,直接進入下一次循環
1 2 3 4 5 | for i in range ( 1 , 6 ): for j in range ( 1 , 3 ): if i = = 3 : continue print (f "{i}層-{i}0{j}室" ) |
3.2、break
break的語法作用是,只要程序遇到break,就會結束當前這個循環,注意如果是多層嵌套循環,只結束當前這一層的循環。
1 2 3 4 5 6 7 | for i in range ( 1 , 6 ): for j in range ( 1 , 3 ): if i = = 3 : continue #跳過第三層,從第四層開始 if i = = 2 and j = = 2 : break #當dao2層2室的時候直接退出二層循環。從三層開始走 print (f "{i}層-{i}0{j}室" ) |
四、打印三角形
打印這樣的三角形
*
**
***
****
*****
****
***
**
*
1 2 3 4 5 6 7 8 9 10 11 12 | #一種方法 for i in range ( 1 , 6 ): print ( "*" * i) for i in range ( 4 , 0 , - 1 ): print ( "*" * i) #第二種方法 n = 10 for i in rang(n): if i< 5 : print (i * "*" ) else : print ((n - i) * "*" ) |
五、while循環
與for必須指定循環多少次不一樣的是,while循環的次數可以是不定的,只要條件滿足就可以永遠循環下去。
5.1、while語法
1 2 | while 條件: #只要條件為真,就不斷循環 print (xxxxx) |
5.2、死循環
1 2 3 4 | count = 0 while True : print (f "第{count}次循環" ) count + = 1 |
5.3、循環10次
1 2 3 4 | count = 0 while count < 10 : print (f "第{count}次循環...." ) count + = 1 |
5.4、python寫99乘法表
1 2 3 4 | for i in range ( 1 , 10 ): print () for j in range ( 1 ,i + 1 ): print (f "{i}*{j}={i*j}" ,end = " " ) |
5.5、用while實現循環猜年齡
需求:允許用戶猜三次,若還不對,鈣塑它,你真笨,還想繼續猜嗎?如果用戶選擇yes,就讓他繼續,如果選擇no就退出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | guess_age = 30 guess_num = 0 while True : guess_num + = 1 if guess_num< = 3 : guess = int ( input ( "請輸入猜的數字:" )) if guess < guess_age: print ( "數字猜小了" ) elif guess > guess_age: print ( "數字猜大了" ) else : print ( "恭喜猜對了" ) else : choice = str ( input ( "錯三次了,你還想繼續猜嗎?[yes/no]" )) if choice = = "": continue elif choice = = "yes" : print ( "游戲繼續" ) guess_num = 0 else : break |
六、random和string模塊(隨機數)
6.1、random模塊
可以殘生指定范圍內的隨機數,字符串等
1 2 3 4 5 6 7 8 | import random #導入random模塊 a = random.choice( "abcdefghigk" ) #參數也可以是一個列表 print (a) s = "asdfghjklzxcv" s = random.sample(s, 5 ) #從數據源s中隨機取出5個值 print (s) i = random.randint( 1 , 100 ) #打印一個隨機數 print (i) |
6.2、string模塊
1 2 3 4 5 6 7 8 9 10 11 | import string a = string.ascii_letters #大小寫全部字符 print (a) s = string.ascii_uppercase #大寫字符 print (s) i = string.ascii_lowercase #小寫字符 print (i) j = string.punctuation #打印特殊字符 print (j) g = string.digits #打印數字 print (g) |
6.3、京牌搖號小程序
需求:允許用戶最多選3次
每次放出20個車牌公用戶選擇
3車牌[A-Z]-[xxxxx],可以是數字和字母在組合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import random import string num_lsit = [] tmp = (string.digits + string.ascii_uppercase) print (random.sample(tmp, 5 )) count = 3 while count > 0 : count - = 1 num_lsit = [] for i in range ( 20 ): car_code = random.choice(string.ascii_uppercase) car_num = f "京{car_code}-{''.join(random.sample(tmp,5))}" num_lsit.append(car_num) print (i,car_num) choice = input ( "choice:" ).strip() if choice in num_lsit: exit(f "恭喜你選購成功,您的車牌為{choice}" ) else : print (f "未選中,還有{count}次機會" ) |
6.4、年會抽獎程序
需求:張三公司有300員工,年會抽獎,獎項如下
一等獎3名,泰國五日游
二等獎6名,iphon手機
三等獎,小玩具一個
每個員工只能限一次。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import random import string a = [] for j in range ( 1 , 301 ): a.append(j) #建立一個員工的地址池 ###########抽一等獎############## print ( "抽一等獎,三等獎是泰國五日游" ) print ( "得獎員工:" ,end = "") for yi in range ( 3 ): tmp = random.choice(a) #隨機去一個員工 print (tmp,end = " " ) a.remove(tmp) #因為每個員工只能拿一個獎,所以刪除員工池以得獎的用戶 print ("") #另起一行 ###########抽二等獎############### print ( "抽二等獎,二等獎是一部iphon手機" ) print ( "得獎員工:" ,end = "") for er in range ( 7 ): tmp = random.choice(a) print (tmp,end = " " ) a.remove(tmp) print ("") ############抽三等獎############## print ( "抽三等獎,三等獎是小玩具一個" ) print ( "得獎員工:" ,end = "") for san in range ( 11 ): tmp = random.choice(a) print (tmp,end = " " ) a.remove(tmp) |