Python基礎學習筆記(三)條件選擇與循環


條件選擇與循環是Python中非常基礎也是非常重要的語句結構,本節重點介紹這兩個部分:

本節知識大綱:

圖片.png

一、條件選擇語句

1. if語句
if 判斷條件:
    要執行的代碼

注意語句結尾有冒號:
下一行有縮進
如果滿足條件,則執行代碼,如果不滿足,則跳過

案例:
(1)在控制檯應用程序中輸入小雨(語文、數學、英語成績單科滿分100分)判斷:
1)如果有一門成績是100分
2)如果有兩門大於90分
3)如果有三門大於80分
滿足以上任何一種情況獎勵一朵小紅花

chinese = int(input("請輸入語文成績:"))
math = int(input("請輸入數學成績:"))
english = int(input("請輸入英語成績:"))
get_course = ""

if (chinese==100 or math == 100 or english == 100):
    if(chinese == 100):get_course+="語文"
    if(math == 100):get_course+="數學"
    if(english == 100):get_course+="英語"
    print("你的%s得了100分,獎勵一朵小紅花" % get_course)

elif((chinese>=90 and math>=90)or(chinese>=90 and english>=90)or(math>=90 and english>=90)):
    if (chinese >=90): get_course += "語文"
    if (math >=90): get_course += "數學"
    if (english >=90): get_course += "英語"
    print("你的%s得了90分以上,獎勵一朵小紅花" % get_course)

elif(chinese>=80 and math>=80 and english>=80):
    if (chinese >= 80): get_course += "語文"
    if (math >= 80): get_course += "數學"
    if (english >= 80): get_course += "英語"
    print("你的%s得了80分以上,獎勵一朵小紅花" % get_course)
else:
    print("沒有獲得小紅花,下次努力哦!")
2. if-else語句

if-else負責兩個分支

if 判斷條件:
    要執行的代碼
else:
    要執行的代碼

案例:
(1)讓用戶輸入用戶名和密碼,如果用戶名爲admin,密碼是123.com,提示登陸成功,否則提示用戶名或密碼錯誤

username = input("請輸入用戶名:")
password = input("請輸入密碼:")
if username.lower().strip() == "admin" and password == "123.com":
    print("登陸成功!")
else:
    print("用戶名或密碼錯誤!")

(2)輸入小雨的(語文、數學、英語)成績(單科成績滿分100分)判斷考試成績,
如果所有科目都及格了,提示:恭喜你,你所有的科目都通過考試了
否則提示:很遺憾,你沒有通過(沒有及格的科目名稱)

chinese_result = int(input("請輸入語文成績:"))
math_result = int(input("請輸入數學成績:"))
english_result = int(input("請輸入英語成績:"))
get_course = ""
if (chinese_result>=60 and math_result>=60 and english_result>=60):
    print("恭喜你,所有的科目都通過考試了!")
else:
    if(chinese_result<60):get_course+="語文"
    if(math_result<60):get_course+="數學"
    if(english_result<60):get_course+="英語"
    print("很遺憾,你沒有通過考試,需要補考的科目是%s"%get_course)
3. if-elif語句

當條件判斷的分支超過兩個,使用if-elif語句

if 判斷條件:
    要執行的代碼
elif 判斷條件:
    要執行的代碼
elif 判斷條件:
    要執行的代碼
……
else:
    要執行的代碼

問題:既然有了if……if……if……else,爲什麼還要有if……elif……elif……else?
答:if……if……if……else是三個分支;而if……elif……elif……else是一個整體;
如果是用 if 的話,他會一直遍歷完所有的if,不管你想判斷的條件有沒有遍歷到,他都會繼續執行完所有的if;而elif 是當程序找到符合查詢條件的語句後,後面所有的elif和else就不會再被執行;

案例:
輸入一個月份,判斷輸入的月份是哪個季節:冬季(12月,1月,2月);春季(3月,4月,5月);夏季(6月,7月,8月)秋季(9月,10月,11月)

month = int(input("請輸入月份:"))
if(month == 12 or month == 1 or month == 2):
    print("現在是冬季")
elif(month == 3 or month == 4 or month == 5):
    print("現在是春季")
elif(month == 6 or month == 7 or month == 8):
    print("現在是夏季")
elif(month == 9 or month ==10 or month == 11):
    print("現在是冬季")

二、循環

1. 循環語句三要素

循環語句三要素.png
案例:
(1)輸入一個大於1的值,然後算出從1加到這個數之和,
比如:輸入6,求出1+2+3+4+5+6

# 循環變量:i=1
# 循環體:循環變量累加,存儲在sum
# 循環條件:i<num
num = int(input("請輸入數值:"))
i = int(1)
sum = int(0)
while i<=num:
    sum += i
    i += 1
print("從1加到%d的和爲:%d"%(num,sum))
2. while語句
while 循環條件:
    循環體

案例:
(1)輸入一個正數,求出從1開始到這個數中所有包含3的數自和3的倍數的和;

num = int(input("請輸入一個正數:"))
i = 1   #循環變量
sum = 0    #存儲累加之後

while i<=num:
    #如果是3的倍數,累加
    if i % 3 == 0:
        sum += i
    #如果包含3的數字,累加
    elif "3" in str(i):
        sum += i
    else:pass
    #循環終止的漸變條件
    i += 1
print("從1到%d中所有包含3的數字的數和所有3的倍數的數的和爲:%d"%(num,sum))

(2)輸入班級人數,然後依次輸入所有學員的成績,計算該班級成員的平均成績和總成績;

"""
循環變量:i=1
循環體:反覆輸入
循環滿足條件:i<=input student number
"""
student_number = int(input("請輸入班級學生人數:"))
i = 1   #循環變量
total_result = 0    #所有的成績之和
while i <= student_number:
    total_result += int(input("請輸入第{:d}位,共{:d}爲學員成績:".format(i,student_number)))
    i+=1

print("班級總共有%d名成員,總成績爲%d,平均成績爲%.2f"%(student_number,total_result,total_result/student_number))

(3)鍵盤輸入正數n,求出n與其反序數之和並輸出,例如:輸入1024,輸出應爲1024+4201=5225。

# 方法1
num01 = input("請輸入一個正數:")
num02 = num01[::-1]
print("該數%d與其反序數%d之和爲:%d"%(int(num01),int(num02),int(num01)+int(num02)))
# 方法2
num01 = input("請輸入一個正數:")
i = 0   #循環變量
new_num = ""
while i < len(num01):
    new_num = num01[i]+new_num
    i+=1
print("該數%s與其反序數%s之和爲%d"%(num01,new_num,int(num01)+int(new_num)))
3. while……else……語句

循環結束後,執行一次else語句,python裏面獨有的一種結構;

num01 = input("請輸入一個正數:")
i = 0   #循環變量
new_num = ""
while i < len(num01):
    new_num = num01[i]+new_num
    i+=1
else:print("循環結束")  #當循環的條件爲false時執行的語句
print("該數%s與其反序數%s之和爲%d"%(num01,new_num,int(num01)+int(new_num)))
4. break語句

break跳出整個循環,包括else都不執行

#break語句
print("====== break測試 =======")
num = 10
i = 0
while i<= num:
    i+=1
    if i==5:break
    else:
        print(i,end=" ")
else:print("\n=====break測試結束=====")

運行結果:

====== break測試 =======
1 2 3 4 
5. continue語句

continue跳出當次循環,後面的繼續執行

# continue語句
print("\n======continue測試=======")
num = 10
i = 0
while i<= num:
    i+=1
    if i==5:continue
    else:
        print(i,end=" ")
else:print("\n=====continue測試結束=====")

運行結果:

======continue測試=======
1 2 3 4 6 7 8 9 10 11 
=====continue測試結束=====

案例
(1)2006年學校8萬人,每年增長20%,請問按此增長速度,到哪年學生人數達到20萬人

student_number = 8
years = 2006
while True:
    student_number *= 1.25
    years +=1
    if student_number>=20:
        break
print("到%d年學生人數達到20萬人"%years)

(2)求1-100間和7(含7的數字,7的倍數)相關的數之和

i = 1
sum = 0
while True:
    if "7" in str(i):
        sum+=i
    elif i%7 == 0:
        sum+=i
    i+=1
    if i>=100:break
print("1-100間和7相關的數之和爲%d"%sum)
6. pass語句

pass語句與continue語句的區別:Python中pass語句是空語句,爲了保持程序的完整性;continue語句執行後,當前循環後面的語句都不執行了,直接進行下一次循環。

8. for語句

基本結構

for <variable> in <sequence>:
    <statements>
else:
    <statements>

表示範圍的四種方法:
(1)方法1:

#使用中括號表示一個List,
#中括號的所有成員都可以從頭到尾取到
for i in [1,2,3,4,6,7,8]:
    print(i,end=" ")

(2)方法2:

#range(單個數字)
#表示一個範圍取到第一個取不到最後一個
#循環從0開始到這個數字-1結束
for i in range(10):
    print(i,end=" ")

(3)方法3:

#range(兩個數字)
#循環從第一個數字開始到第二個數字-1結束,每次遞增1
for i in range(2,10):
    print(i,end=" ")

(4)方法4:

#range(三個數字)
#循環從第一個數字開始到第二個數字-1結束,每次遞增第三個數字的值
for i in range(2,10,2):
    print(i,end=" ")

案例:
(1)求從1到100之和

sum_of_number = 0   #存儲和的值
for i in range(0,101):
    sum_of_number+=i
else:print("==循環結束==")
print(sum_of_number)

(2)求1-100間5和7的倍數之和

for i in range(1,101):
    if i%5==0 or i%7==0:
        sum+=i
print(sum)

(3)水仙花數是個三位數,它的個位數字的三次方加上十位數字的三次方加上百位數字的三次方等於它本身,求一個水仙花數:

# 水仙花數
num_flower = ""
for i in range(100,1000):
    num_ge = i % 10
    num_shi = (i // 10) % 10
    num_bai = i // 100
    if num_ge**3 + num_shi**3 + num_bai**3 == i:
        num_flower+=str(i)+" "
print("水仙花數有:%s"%num_flower)
9. 循環嵌套

案例:
(1)打印乘法口訣表

# 打印乘法口訣表
for i in range(1,10):
    for j in range(1,i+1):
        print("%d*%d=%d\t"%(j,i,i*j),end=" ")
    print()

圖片.png

(2)100元買2元的鉛筆✏️、5元的文具盒、10元的📂文件夾、15元的彩筆,剛好花完,每樣物品至少有一種,一共有多少種組合?打印每一種組合。

count = 0   # 有多少種情況
for i in range(1,51):   # 鉛筆最多買50個
    for j in range(1,21):   # 文具盒最多買20個
        for k in range(1,11):   # 文件夾最多買10個
            for l in range(1,7):    # 彩筆最多買6個
                if i * 2 + j * 5 + k * 10 + l * 15 == 100:
                    count += 1
                    print("第%d種情況:可以買%d個鉛筆,%d個文具盒,%d個文件夾,%d個彩筆"%(count,i,j,k,l))

(3)打印一個由*組成的等腰三角形,三角形的大小由輸入的數字決定;

# 打印等腰三角形n
n = int(input("請輸入要打印的行數:"))
# 行數
for i in range(1,n+1):
    # 打印空格數
    for l in range(1,n+1-i):
        print(" ",end="")
    # 打印*
    for j in range(1,2*i):
        print("*",end="")
    print()

好啦,關於條件選擇與循環就介紹到這裏,下一節我們繼續介紹Python中的列表與元組

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