Python 從入門到精通 第三天
今日目標
流程控制語句、退出循環、練習學習的內容
一、流程控制語句
流程控制的三種方式:順序語句、雙分支語句、循環語句
雙分支語句
Python 的雙分支語句使用if-else語句實現。
其語法結構如下:
if條件:#如果條作為真,執行這個代碼塊
else:#如果條性為假,執行這個代碼塊
其中,條件是一個布爾表達式,如果它的結果為True,則執行第一個代碼塊,否則執行第二個代碼塊。
在Python中,代碼塊使用縮進來表示,因此需要注意代碼塊的縮進量。
通常使用四個空格來表示一個縮進級別。
# 獲取用戶輸入的年齡
age = int(input("請輸入您的年齡:"))# 判斷是否可以去網吧上網
if age >= 18:print("您可以去網吧上網")
else:print("您未滿18歲,不能去網吧上網")
多分支語句
在Python中,多分支語句通常使用if-elif-else語句實現。它的語法結構如下:
if 條件1:#如果條件1為真,執行這個代碼塊
elif 條件2:#如果條件1為假,且條件2為真,執行這個代碼塊。
elif 條件3:#如果條件1和條件2都為假,且條件3為真,執行這個代碼塊。
else:#如果所有條件都為假,執行這個代碼塊。
# 獲取用戶輸入的身高和體重
height = float(input("請輸入您的身高(單位:米):"))
weight = float(input("請輸入您的體重(單位:千克):"))
# 計算BMI并輸出結果
bmi = weight / (height ** 2)
print(f"您的BMI指數為{bmi}")# 根據BMI范圍輸出建議
if bmi < 18.5:print("您的體重過輕,請增加營養攝入并進行適當活動。")
elif bmi < 24:print("您的體重正常,請繼續保持。")
elif bmi < 28:print("您的體重過重,請注意控制飲食并加強鍛煉。")
else:print("您的體重嚴重超標,請及時咨詢醫生。")
分支嵌套
# 獲取用戶輸入的身份證號碼
id_nmuber = input("請輸入您的身份證號碼:")# 判斷身份證號碼是否為18位
if len(id_nmuber)!=18:print("您的身份證號碼不是18位,請重新輸入。")
else:# 獲取身份證號碼的前6位和倒數第二位native_place_code = id_nmuber[:6]gender_code = int(id_nmuber[-2])# 判斷籍貫if native_place_code == "370600":print("您的籍貫是山東省。")elif native_place_code =="110000":print("您的籍貫是北京市。")elif native_place_code == "120000":print("您的籍貫是天津市。")elif native_place_code == "310000":print("您的籍貫是上海市。")elif native_place_code == "500000":print("您的籍貫是重慶市。")else:print("您的籍貫是其他城市。")#判斷性別if gender_code % 2 == 0:print("您的性別是女性。")else:print("您的性別是男性。")
循環語句
循環語句是一種編程語言的控制結構,用于在程序中重復執行—段代碼,直到滿足特定條件為止。
循環語句可以幫助程序員簡化重復性的任務,提高代碼的可讀性和效率。
while循環
while循環用于在條件為真的情況下重復執行一段代碼,直到條件變為假為止。
以下是while循環的語法:
while條件:循環體
在執行while循環時,程序會先檢查條件是否為真。
如果條件為真,就執行循環體中的代碼,然后再次檢查條件。
如果條件仍為真,就再次執行循環體中的代碼,以此類推,直到條件變為假為止。
# 使用while循環打印10次“hello world"
count = 0
while count < 10:print("hello world")count += 1
for循環
for循環用于對一個序列(如字符串、列表、元組等)中的元素進行遍歷和操作,直到序列中的所有元素都被遍歷為止。
以下是for循環的語法:
for 變量 in 序列:循環體
在執行for循環時,程序會依次將序列中的每個元素賦值給變量,并執行循環體中的代碼,直到序列中的所有元素都被遍歷完為止。
以下是使用for循環打印10次"hello world"的代碼示例:
# 使用for循環打印10次“hello world”
for i in range(10):print("hello world")
驗證碼案例
import random
import string# 定義可選字符集
characters = string.ascii_uppercase = string.digits# 生成五位隨機驗證碼
code = ""
for i in range(5):code += random.choice(characters)
print(code)
累加和案例
# 定義變量sum并初始化為0
sum = 0# 使用for循環將1到100的數相加
for i in range(1, 101):sum += i# 輸出結果
print("1到100的和為:", sum)
sum = 0
for i in range(1, 101):if i % 2 == 0:sum += iprint("1到100中所有偶數的和為:", sum)
循環語句嵌套分支語句
print("歡迎來到游戲世界!")
while True:print("請選擇您要進行的操作:")print("1.攻擊敵人")print("2.購買道具")print("3.逃跑")choice = input("請選擇操作(輸入數字1,2,3):")if choice == "1":print("您發起了攻擊,打敗了敵人!")elif choice == "2":print("您購買了一件道具,增強了自己的能力!")elif choice == "3":print("您逃跑了,但是被追上了!")else:print("您的輸入無效,請重新輸入")continueconfirm = input("是否繼續游戲?(輸入y或n):")if confirm == "n":print("游戲結束,謝謝參與!")break
# 九九乘法表
for i in range(1,10):for j in range(1,i+1):print(f"{j} * {i} = {i * j}",end="\t")print()
編寫一個Python程序,輸出一個nx n的方陣,其中第i行第j列的格子中應該填寫i+j的結果。
要求:
輸入n的值,保證是一個正整數。
要求輸出的方陣中每個格子的寬度都為4個字符,格子之間用制表符分隔。
輸出的方陣中每行的末尾不能有多余的制表符。
輸出的方陣中每行的末尾必須有一個換行符。
def print_matrix(n):for i in range(1, n + 1):for j in range(1, n + 1):# 格式化每個格子的內容為4個字符寬度cell = "{:4d}".format(i + j)# 輸出格子內容,以制表符分隔print(cell, end="\t")# 每行末尾去除多余的制表符,并換行print()# 輸入n的值
n = int(input("請輸入正整數n的值:"))# 調用函數輸出方陣
print_matrix(n)
二、退出循環
在Python編程語言中,break和continue是兩個控制流語句,可以用于改變程序的執行流程。
break語句用于跳出當前的循環(for循環或while循環),使程序繼續執行循環之后的代碼,即跳出整個循環體。
例如:
for i in range(1, 11):if i == 5:breakprint(i)
上面的代碼將會輸出1、2、3、4,因為當i等于5時,break語句被執行,跳出整個循環。
continue語句用于結束當前的循環迭代,跳過剩余的代碼,繼續執行下一次循環迭代。
例如:
for i in range(1, 11):if i == 5:continueprint(i)
上面的代碼將會輸出1、2、3、4、6、7、8、9、10。
因為當i等于5時,continue語句被執行,跳過當前的迭代,直接進入下一次迭代。
三、練習學習的內容
1.假設你正在寫一個簡單的計算器程序,可以讓用戶輸入兩個數字和一個操作符,然后輸出計算結果。
你需要使用分支循環語句來實現這個程序。
假設操作符可以是加號、減號、乘號或除號,你的程序需要根據用戶輸入的操作符執行相應的計算操作,并輸出計算結果。如果用戶輸入的操作符不是加號、減號、乘號或除號,則輸出錯誤信息并讓用戶重新輸入。
while True:# 用戶輸入兩個數字和一個操作符num1 = float(input("請輸入第一個數字:"))num2 = float(input("請輸入第二個數字:"))operator = input("請輸入操作符(+、-、*、/):")# 根據操作符執行相應的計算操作,并輸出結果if operator == '+':result = num1 + num2print("計算結果:", result)elif operator == '-':result = num1 - num2print("計算結果:", result)elif operator == '*':result = num1 * num2print("計算結果:", result)elif operator == '/':if num2 != 0:result = num1 / num2print("計算結果:", result)else:print("錯誤:除數不能為0,請重新輸入。")else:print("錯誤:無效的操作符,請重新輸入。")# 詢問用戶是否繼續計算choice = input("是否繼續計算?(y/n)")if choice.lower() != 'y':break
2.計算初始本金為1萬,年利率為0.0325的情況下,需要多少年才能將本金和利息翻倍,即本金和利息的總和達到原來的兩倍。
principal = 10000 # 初始本金
interest_rate = 0.0325 # 年利率
target_amount = principal * 2 # 目標金額years = 0 # 初始年數
while principal < target_amount:principal += principal * interest_rate # 計算每年的利息years += 1print("本金和利息翻倍需要{}年".format(years))
3.首先,程序使用random.randint()函數產生一個1~10之間的隨機數。
然后,程序通過for循環提示玩家輸入一個猜測的數字,玩家可以輸入一個1~10之間的整數。
如果玩家猜對了數字,程序輸出恭喜玩家的信息并結束游戲;
如果玩家猜錯了,程序會根據玩家輸入的數字與隨機數之間的大小關系來提示玩家是否猜對
并在每次猜錯后告訴玩家還剩下幾次機會。
如果玩家在三次機會內猜對了數字,程序輸出恭喜玩家的信息并結束游戲;
否則程序輸出很遺憾的信息并結束游戲。
import randomrandom_number = random.randint(1, 10) # 生成1~10之間的隨機數for _ in range(3): # 最多猜3次guess = int(input("請輸入一個1~10之間的整數:"))if guess == random_number:print("恭喜你,猜對了!")breakelif guess < random_number:print("猜錯了,你猜的數字太小了。")remaining_chances = 2 - _if remaining_chances > 0:print("還剩下{}次機會。".format(remaining_chances))else:print("很遺憾,你沒有猜對。正確答案是{}。".format(random_number))else:print("猜錯了,你猜的數字太大了。")remaining_chances = 2 - _if remaining_chances > 0:print("還剩下{}次機會。".format(remaining_chances))else:print("很遺憾,你沒有猜對。正確答案是{}。".format(random_number))