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