【Python學習筆記Day09】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("進程結束")    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章