2.7 分支與循環三
1. While循環
While 條件:
循環體
條件爲真一直執行循環體,知道條件爲假,退出循環體
循環體裏可以設置條件會改變,則會在執行一定循環之後,會發生退出,python中不能執行無限循環
2. For循環 (計數器循環)
#python的循環和c語言的for循環不一樣,功能要強大一點
例一:
for 目標 in 表達式:
循環體
favorite = "weivid"
for i in favorite:
print(i,end=" ") # 打印字符串中的每個字符,並空格連接
運行結果,以空格分隔:
例二:
member = ['weivid', 'wangwei', 'yijing'] #[]定義member是一個列表類型
for each in member:
print(each, len(each)) #len表示字符串的長度
運行結果:
3. range()和for循環類似
3.1 range()方法
range ([strat,], stop[,step = 1])
#BIF有三個參數,其中用[]的兩個表示參數是可選的
#step = 1 表示第三個參數的默認值是1
range這個BIF的作用是生成一個從start參數的值,開始到stop參數的值結束的數字序列
range(5) #返回一個range(0,5),值爲0,1,2,3,4不包含5
#左閉右開[0,5)
print(range(5))
list1 = list(range(5))#list()把參數生成一個列表
print(list1)#輸出[0,1,2,3,4]
運行結果:
3.2 傳遞一個參數的range,默認從0,開始
print("傳遞一個參數的range(5)")
for i in range(5):
print(i, end=" ")
print()
運行結果:
3.2 傳遞兩個參數的range
print("#傳遞兩個參數的range(1,10):")
for j in range(1, 10):
print(j, end=" ")
print()
運行結果:
3.3 傳遞三個參數的range,第三個參數爲步長
print("#傳遞三個5參數的range(1,10,2)")
for m in range(1,10,2):
print(m, end=" ")
print()
運行結果:
4. 兩個關鍵語句
1)break語句
終止當前循環,跳出循環體
#break 當條件成立可以跳出循環體
string = "I love weivid"
answer = input("請輸入weivid最想聽到的一句話:")
while True:
if answer == string:
break
else:
answer = input("sorry!請重新輸入(答案對了才能退出):")
print("you are goood!")
2)continue語句
終止本輪循環,進行下一輪循環,在執行下一輪循環之前,先判斷條件在執行,若不正確,則退出循環
#continue
for i in range(10):
if i%2 != 0:
print(i)
continue
i += 2
print(i)
#奇數則直接打印,並退出循環體,開始下一個循環
#偶數則不滿足if條件,則加2打印
運行結果:
5. 練習題
1.下面的代碼片段打印多少次
for i in range(0,10,2):
print("I love weivid")
#五次
for j in 5:
print("I love weivid!!!")
#會報錯,因in是成員資格運算符
2. range(10)會有哪些數?
會生成range(0,10)
list(range(0,10)) 轉換爲列表[0,1,2,3,4,5,6,7,8,9],不包含10
3. 一下代碼片段會打印什麼? #break 只能跳出一層循環
while True:
while True:
break
print(1)
print(2)
break
print(3)
運行結果:
3.什麼情況下,我們需要循環體永遠爲真?
用於遊戲實現,操作系統的運行,服務器等。
雖然永遠爲True,但是對於這個”死循環“,不一定是壞事,可以隨時用break跳出循環
4. 學會提高代碼的效率,修改一下代碼片段
i = 0
string = "I love weivid"
while i < len(string):
print(i)
i += 1
#以上代碼片段之所以效率低,是因爲:每次循環都要使用函數len()
#修改後的如下:
i = 0
string = "I love weivid"
length = len(string)
while i < length:
print(i)
i += 1
5. 程序設計題
設計一個驗證用戶密碼程序,用戶只有三次機會輸入錯誤,不過如果輸入的內容包括
”*“,則次數不計算在內
count = 3
password = "I love weivid" #假設密碼設定爲:I love weivid
while count > 0:
answer = input("請輸入用戶密碼:")
if answer == password:
print("密碼正確,請進入程序")
break
elif '*' in password:
print("密碼不包含”*“號,請重新輸入,您還有",count,"次機會!",end=" ")
continue
else:
print("您的密碼輸入錯誤!您還有",count-1,"次機會!")
count -= 1
6. 編寫一個程序,求100-999之間所有水仙花的數
如果一個三位數等於各位數字的立方和,則稱這個數爲水仙花,例如153 = 13 + 53 + 33
for i in range(100,999):
sumdata = 0
temp = i
while temp:
sumdata = sumdata + (temp%10)**3
temp //= 10 # 此循環是計算每個數的三位數的立方和,注意使用地板除法
if sumdata == i:
print(i)
7. 三色球問題
有紅、黃、藍三種顏色的球,其中紅色 3個, 黃色 3個,藍色 6個, 將這12個球放進盒子中,從中任意摸出8個球,編程計算各種球的顏色搭配
print("三色球:紅、黃、藍")
#red = yellow = blue = 0
for red in range(0,4):
for yellow in range(0,4):
for blue in range(2,7):
if red + yellow + blue == 8:
print(red,yellow,blue)
print("進程結束")