流程控制語句是計算機編程中用于控制程序執行流程的語句。它們允許根據條件來控制代碼的執行順序和邏輯,從而使程序能夠根據不同的情況做出不同的決策。流程控制實現了更復雜和靈活的編程邏輯。
-
順序語句
順序語句是按照編寫的順序依次執行程序中的代碼。代碼會按照從上到下的順序有且僅執行一次。
-
分支語句
根據條件的真假來選擇性地執行不同的代碼塊。這使得程序能夠根據不同的情況做出不同的響應。
-
循環語句
允許重復執行一段代碼,以便處理大量的數據或重復的任務。循環語句可以用于多次執行相同或類似的代碼塊,從而實現重復操作的需求。
流程控制是編程中的基本概念之一,對于編寫高效、可靠的程序至關重要。
一、 分支語句
1.1、雙分支語句
雙分支語句是一種編程結構,用于根據條件的真假選擇不同的執行路徑。它基于條件的結果,決定程序執行的部分。在許多編程語言中,雙分支語句通常使用 if-else 語句來實現。
if 條件表達式:# 條件表達式為True執行的語句塊# pass 語句可以占位 else:# 條件表達式為False執行的語句塊
其中,條件是一個表達式或邏輯判斷,它的結果可以是 True(真)或 False(假)。
當條件為真時,執行代碼塊A,也稱為 if 代碼塊;當條件為假時,執行代碼塊B,也稱為 else 代碼塊。
雙分支語句允許根據不同的條件結果執行不同的代碼邏輯,從而實現程序的分支選擇和條件判斷。它是一種基本的控制流程結構,常用于處理二選一的情況。
# 案例1:獲取用戶年齡 age = int(input("請輸入您的年齡:"))# 判斷是否進入成年模式 if age >= 18:print("進入成年模式!")print("歐美區")print("日韓區")print("國產區") else:print("進入青少年模式!")print("科幻冒險類")print("益智早教類")print("科普記錄類") print("程序結束")# 案例2:根據用戶輸入的成績判斷其等級。如果成績大于等于60分,則輸出"及格",否則輸出"不及格"。 score = float(input("請輸入成績:"))if score >= 60:print("及格") else:print("不及格")# 案例3: 編寫一個程序,判斷一個年份是否為閏年。如果是閏年,則輸出"是閏年",否則輸出"不是閏年"。閏年的判斷條件是能夠被4整除但不能被100整除,或者能夠被400整除。 year = int(input("請輸入年份:"))# print(year % 400 == 0 or (year % 4 == 0 and year % 100 != 0)) is_run = year % 400 == 0 or (year % 4 == 0 and year % 100 != 0)if is_run:print("是閏年") else:print(f"{year}不是閏年")# 案例4:編寫一個程序,根據用戶輸入的三個數字,判斷這三個數字是否能夠構成一個等邊三角形。如果能夠構成等邊三角形,則輸出"能構成等邊三角形",否則輸出"不能構成等邊三角形"。等邊三角形的判斷條件是三條邊的長度相等。 num01 = int(input("請輸入一個數字:")) num02 = int(input("請輸入一個數字:")) num03 = int(input("請輸入一個數字:"))# if num01 == num02 and num01 == num03 if num01 == num02 == num03:print("能構成等邊三角形") else:print("不能構成等邊三角形")# 案例5: 用戶輸入一個年齡,判斷是否符合20-35 age = int(input("請輸入一個年齡:")) # if age > 20 and age < 35: if 20 < age < 35:print("符合招聘要求") else:print("不符合招聘要求")# 案例6: 輸入一個數字,判斷是否為偶數 num = int(input("請輸入一個數字:"))if num % 2 == 0:print("是偶數") else:print("是奇數")
重點:冒號+縮緊:標識語句塊
和其它程序設計語言(如?Java、C 語言)采用大括號“{}”分隔代碼塊不同,Python?采用代碼縮進和冒號( : )來區分代碼塊之間的層次。
在 Python 中,對于類定義、函數定義、流程控制語句、異常處理語句等,行尾的冒號和下一行的縮進,表示下一個代碼塊的開始,而縮進的結束則表示此代碼塊的結束。
注意,Python 中實現對代碼的縮進,可以使用空格或者 Tab 鍵實現。但無論是手動敲空格,還是使用 Tab 鍵,通常情況下都是采用 4 個空格長度作為一個縮進量(默認情況下,一個 Tab 鍵就表示 4 個空格)。
1.2、單分支語句
單分支語句只包含一個條件判斷和一個對應的代碼塊。如果條件為真,執行代碼塊中的語句;如果條件為假,則直接跳過代碼塊。
# 示例:獲取兩個值中的較小值# 版本1:雙分支版本 # 獲取兩個輸入值 num01 = int(input("num01:")) num02 = int(input("num02:"))if num02 < num01:print("較小值:", num02) else:print("較小值:", num01)# 版本2:單分支版本 # 獲取兩個輸入值 num01 = int(input("num01:")) num02 = int(input("num02:"))# 如果num1比較小,直接打印輸出;如果num02比較小,那就交換值,把較小的給num01輸出打印 if num02 < num01:num01, num02 = num02, num01print("較小值:", num01)
1.3、多分支語句
多分支語句(if-elif-else語句)可用于在多個條件之間進行選擇。
if condition1:# 當條件1為真時執行的代碼塊 elif condition2:# 當條件2為真時執行的代碼塊 elif condition3:# 當條件3為真時執行的代碼塊 ... else:# 當所有條件都為假時執行的代碼塊""" 多分支語句語法if 表達式1:語句塊1 elif 表達式2:語句塊2 elif 表達式3:語句塊3 elif 表達式4:語句塊4 elif 表達式5:語句塊5 else:語句塊6 備注: 以上是一條語句,多個判斷選其一1、上面的表達式1-5,只要有一個表達式成立,那么后面的語句都不在執行例如:表達式1成立的同時表達式3也成立,那么只執行語句塊1不會執行語句塊32、如果上面的表達式1-5都不成立,那么就執行else語句塊 """
案例1:成績等級
# 案例1:根據用戶輸入的成績判斷其等級。 # 如果成績[90,100],則輸出"優秀" # 如果成績[80,90],則輸出"良好" # 如果成績[60,80],則輸出"及格" # 如果成績小于60,則輸出"不及格" # 如果成績小于0或大于100,則輸出"成績有誤"# 版本1 # score = float(input("請輸入成績:")) # # if 90 <= score <= 100: # print("成績優秀!") # elif 80 <= score < 90: # print("成績良好!") # elif 60 <= score < 80: # print("成績及格!") # elif 0 <= score < 60: # print("成績不及格!") # else: # print("非法輸入!")# 版本2: score = float(input("請輸入成績:"))if score > 100 or score < 0:print("非法輸入!") elif score >= 90:print("成績優秀!") elif score > 80:print("成績良好!") elif score >= 60:print("成績及格!") elif score > 0:print("成績不及格!")
案例2:BMI測試
# 示例:計算BMI并給出健康建議# 獲取用戶輸入的身高和體重 height = float(input("請輸入您的身高(單位:米):")) weight = float(input("請輸入您的體重(單位:千克):"))# 計算BMI height ** 3 height的3次方 bmi = weight / (height ** 2) # height ** 2 表示:height *height 就是2次方,# 根據BMI給出健康建議 if bmi < 18.5:advice = f"您的BMI為 {bmi:.3},體重過輕,建議增加營養攝入。" # bmi:.3 .3就是保留3位小數 elif 18.5 <= bmi < 24:advice = f"您的BMI為 {bmi:.3},體重正常,繼續保持健康的生活方式。" elif 24 <= bmi < 28:advice = f"您的BMI為 {bmi:.3},體重過重,建議適當控制飲食并增加運動。" else:advice = f"您的BMI為 {bmi:.3},體重肥胖,建議減少高熱量食物攝入并增加運動量。"# 輸出健康建議 print(advice)
案例3:游戲場景選擇
import random""" # 場景: # (1)怪物房: 遇到了史萊姆,并打敗了它,金幣加5,經驗加10! # (2) 寶箱房: 你打開了寶箱,獲得了鑰匙 # (3) 陷阱房: 你觸發了陷阱,受到了毒箭的傷害,血值減10 # (4) 商店: 你來到了商店,購買了藥水,金幣減5,血值加20擴展:隨意從,列表中選擇一個room = random.choice(["怪物房", "寶箱房", "陷阱房", "商店"])print("房間:", room) """coin = 100 # 金幣 exp = 100 # 經驗 blood = 100 # 血值 chest = [] # 寶箱room = input("請輸入房間名:")# 下面的所有if或elif都是一條語句,多選一,必須執行一個,執行任意一個其他都不會執行了所以就是一條語句 if room == "怪物房":print("遇到了史萊姆,并打敗了它")coin += 5exp += 10 elif room == "寶箱房":print("你打開了寶箱,獲得了鑰匙")chest.append("鑰匙")print("當前寶貝:", chest) elif room == "陷阱房":print("你觸發了陷阱,受到了毒箭的傷害")blood -= 10 elif room == "商店":print("你來到了商店,購買了藥水")coin -= 5blood += 20print(f""" 玩家信息:金幣:{coin}經驗值:{exp}血值: {blood} """)print("游戲結束")
1.4、分支嵌套
分支嵌套是指在一個分支語句內部嵌套另一個分支語句。
案例1:
age = int(input("年齡:"))if age > 18:print("大人電影!")choice = input("""1. 日韓區2. 歐美區3. 國產區 """)if choice == "1":print("《熔爐》")print("《千與千尋》")print("《龍貓》")print("《天空之城》")elif choice == "2":print("《肖申克的救贖》")print("《當幸福來敲門》")print("《阿甘正傳》")print("《星際穿越》")elif choice == "3":print("《霸王別姬》")print("《大話西游》")print("《讓子彈飛》")print("《無間道》")else:print("輸入有誤!")print("觀看大人電影結束!")else:print("少兒電影")print("科幻冒險類")print("益智早教類")print("科普記錄類")print("程序結束")
案例2:
"""勇士與地下城的場景續寫: (1)怪物房: 遇到了史萊姆1. 選擇攻擊,戰勝史萊姆,則經驗加20,金幣加20,失敗則經驗減20,金幣減20,血值減20,成功的概率為50%。2. 選擇逃跑,則金幣減20(2) 寶箱房: 你打開了寶箱,獲得了鑰匙(3) 陷阱房: 你觸發了陷阱,受到了毒箭的傷害,血值減10(4) 商店: 你來到了商店,打印當前血值和金幣,一個金幣買一個藥水對應10個血值,引導是否購買藥水1. 購買,引導購買幾個金幣的藥水,并完成減金幣和增血值2. 不購買,打印退出商店""" import randomcoin = 100 exp = 100 blood = 100 chest = []room = input("請輸入房間名:")if room == "怪物房":print("遇到了史萊姆")choice = input("【1.攻擊/2.逃跑】")if choice == "1":# 選擇攻擊print("選擇干史萊姆!")is_success = random.choice([100, 200]) # 100:成功 200:失敗if is_success == 100:print("戰勝史萊姆!")coin += 20exp += 20else:print("沒打過史萊姆!")coin -= 20exp -= 20blood -= 20elif choice == "2":# 逃跑的邏輯print("逃跑ing")coin -= 20else:print("無效輸入!")print("離開怪物房") elif room == "寶箱房":print("你打開了寶箱,獲得了鑰匙")chest.append("鑰匙")print("當前寶貝:", chest) elif room == "陷阱房":print("你觸發了陷阱,受到了毒箭的傷害")blood -= 10 elif room == "商店":print(f"玩家的金幣:{coin},血值:{blood}")print("一個金幣買一個藥水對應10個血值")is_buy = input("是否購買藥水【Y/N】")if is_buy == "Y":num = int(input("購買幾瓶藥水?"))coin -= 1 * numblood += 10 * numprint(f"當前玩家的金幣:{coin},血值:{blood}")elif is_buy == "N":print("退出商店!")else:print("無效輸入!")print(f""" 玩家信息:金幣:{coin}經驗值:{exp}血值: {blood} """)print("游戲結束")
?二、循環語句
預備知識:
PyCharm提供了豐富的功能來幫助開發者編寫、調試和運行 Python 代碼。其中,PyCharm 的 Debug 模式是一種強大的調試工具,可以幫助開發者在代碼執行過程中逐行跟蹤和分析程序的行為。以下是關于 PyCharm Debug 模式的介紹:
設置斷點:在需要調試的代碼行上設置斷點,斷點是程序的一個暫停點,當程序執行到斷點時會暫停執行,允許開發者逐行檢查代碼。
啟動 Debug 模式:在 PyCharm 中,可以通過點擊工具欄上的 "Debug" 按鈕來啟動 Debug 模式,或者使用快捷鍵(通常是 F9)。
逐行執行:在 Debug 模式下,可以使用調試工具欄上的按鈕(如「Step Over」、「Step Into」和「Step Out」)逐行執行代碼。Step Over 會執行當前行并跳轉到下一行,Step Into 會進入函數調用并逐行執行函數內部代碼,Step Out 會執行完當前函數并跳出到調用該函數的位置。
變量監視:在 Debug 模式下,可以查看變量的值和狀態。在調試工具欄的「Variables」窗口中,可以看到當前作在 PyCharm 中,Debug 模式是一種強大的調試工具,可以幫助開發者在代碼執行過程中逐行跟蹤和分析程序的行為。
循環語句
循環語句是編程中的一種控制結構,用于重復執行特定的代碼塊,直到滿足特定的條件為止。它允許程序根據需要多次執行相同或類似的操作,從而簡化重復的任務。
2.1、while循環
while循環用于在條件為真的情況下重復執行一段代碼,直到條件變為假為止。以下是while循環的語法:
while條件:循環體
在執行while循環時,程序會先檢查條件是否為真。如果條件為真,就執行循環體中的代碼,然后再次檢查條件。如果條件仍為真,就再次執行循環體中的代碼,以此類推,直到條件變為假為止。
# (1) 無限循環 while True:print("hello world")# (2) 有限循環(三要素循環) # 有限循環方式1 # 案例1: 打印10次hello world count = 0 # 1、初始變量 while count < 10: # 2、判斷表達式print("hello world")count += 1 # 3、步進語句 count = count+1#有限循環方式2 count = 100 # 初始語句 while count > 0: # 判斷條件print("count:::", count)count -= 1 # 步進語句
2.2、循環案例
案例1:計算1-100的和
""" # 準備: # 假設有一個變量s的初始值為0,將s增加5次,每次增加值分別為1,2,3,4,5,然后打印s的值。 """ # 計算1-100的和count = 1 s = 0 while count <= 1000:# 邏輯代碼塊開始s += count# 邏輯代碼塊結束count += 1print(s)
案例2:驗證碼案例
?string類封裝了常用的字符串如下:
# 假設有一個變量s的初始值為"",將s拼接5次,每次增加值分別為"A","B","C",然后打印s的值。 s = "" s += "A" s += "B" s += "C" print(s)# 假設有一個變量s的初始值為"",將s拼接5次,每次增加值分別為"A","B","C",然后打印s的值。 import random import string# # print(string.digits+string.ascii_lowercase+string.ascii_uppercase) # print(string.digits+string.ascii_letters)# 隨機生成10個字符的字符串 count = 0 s = "" while count < 10:# 邏輯代碼塊開始char = random.choice(string.digits + string.ascii_letters)# print(char)s += char# 邏輯代碼塊結束count += 1print("s:::", s) # s::: oJ9iGMiqPF
2.3、for循環
for循環用于對一個容器對象(如字符串、列表、元組等)中的元素進行遍歷和操作,直到所有元素都被遍歷為止。以下是for循環的語法:
for 變量 in 容器對象(字符串,列表,字典等):循環體for i in "hello world":# print("yuan")print(i)
在執行for循環時,程序會依次將序列中的每個元素賦值給變量,并執行循環體中的代碼,直到序列中的所有元素都被遍歷完為止。
在 Python 中,range()
?函數用于生成一個整數序列,它常用于循環和迭代操作。
range(stop) range(start, stop, step)
參數解釋:
-
start
(可選):序列的起始值,默認為 0。 -
stop
:序列的結束值(不包含在序列中)。 -
step
(可選):序列中相鄰兩個值之間的步長,默認為 1。
for i in range(10): # 循環10次print("yuan")# 基于for循環實現1+100的和的計算 s = 0 for i in range(1, 101): # 循環次數s += i print(s) # 5050
2.4、嵌套語句
案例1:打印出從 0 到 99 中能被 13 整除的所有數字。
for i in range(100):if i % 13 == 0:print(i)
案例2:打印出從 1 到 100 的所有整數,但將整除 3 的數字打印為 "Fizz",整除 5 的數字打印為 "Buzz",同時整除 3 和 5 的數字打印為 "FizzBuzz"。
# 案例3: # 打印出從 1 到 100 的所有整數, # 將整除 3 的數字打印為 "Fizz", # 整除 5 的數字打印為 "Buzz", # 同時整除 3 和 5 的數字打印為 "FizzBuzz"。 for i in range(1, 101):if i % 3 == 0 and i % 5 == 0:print(f"{i}:FizzBuzz")elif i % 3 == 0:print(f"{i}:Fizz")elif i % 5 == 0:print(f"{i}:Buzz")else:print(f"{i}:各種情況都不符合!")print(f"完成數字{i}判斷!")
案例3:循環嵌套分支
# (1) 無限循環嵌套 import randomcoin = 100 exp = 100 blood = 100 chest = []while True:room = input("請輸入房間名:")if room == "怪物房":print("遇到了史萊姆")choice = input("【1.攻擊/2.逃跑】")if choice == "1":# 選擇攻擊print("選擇干史萊姆!")is_success = random.choice([100, 200]) # 100:成功 200:失敗if is_success == 100:print("戰勝史萊姆!")coin += 20exp += 20else:print("沒打過史萊姆!")coin -= 20exp -= 20blood -= 20elif choice == "2":# 逃跑的邏輯print("逃跑ing")coin -= 20else:print("無效輸入!")print("離開怪物房")elif room == "寶箱房":print("你打開了寶箱,獲得了鑰匙")chest.append("鑰匙")print("當前寶貝:", chest)elif room == "陷阱房":print("你觸發了陷阱,受到了毒箭的傷害")blood -= 10elif room == "商店":print(f"玩家的金幣:{coin},血值:{blood}")print("一個金幣買一個藥水對應10個血值")is_buy = input("是否購買藥水【Y/N】")if is_buy == "Y":num = int(input("購買幾瓶藥水?"))coin -= 1 * numblood += 10 * numprint(f"當前玩家的金幣:{coin},血值:{blood}")elif is_buy == "N":print("退出商店!")else:print("無效輸入!")print(f"""玩家信息:金幣:{coin}經驗值:{exp}血值: {blood}""")print("游戲結束")####################################################################################import randomcoin = 100 exp = 100 blood = 100 chest = []for i in range(3):room = input("請輸入房間名:")if room == "怪物房":print("遇到了史萊姆")choice = input("【1.攻擊/2.逃跑】")if choice == "1":# 選擇攻擊print("選擇干史萊姆!")is_success = random.choice([100, 200]) # 100:成功 200:失敗if is_success == 100:print("戰勝史萊姆!")coin += 20exp += 20else:print("沒打過史萊姆!")coin -= 20exp -= 20blood -= 20elif choice == "2":# 逃跑的邏輯print("逃跑ing")coin -= 20else:print("無效輸入!")print("離開怪物房")elif room == "寶箱房":print("你打開了寶箱,獲得了鑰匙")chest.append("鑰匙")print("當前寶貝:", chest)elif room == "陷阱房":print("你觸發了陷阱,受到了毒箭的傷害")blood -= 10elif room == "商店":print(f"玩家的金幣:{coin},血值:{blood}")print("一個金幣買一個藥水對應10個血值")is_buy = input("是否購買藥水【Y/N】")if is_buy == "Y":num = int(input("購買幾瓶藥水?"))coin -= 1 * numblood += 10 * numprint(f"當前玩家的金幣:{coin},血值:{blood}")elif is_buy == "N":print("退出商店!")else:print("無效輸入!")print(f"""玩家信息:金幣:{coin}經驗值:{exp}血值: {blood}""")print("游戲結束")
案例4:打印撲克牌
# 案例1: poke_types = ['??', '??', '??', '??'] poke_nums = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']for pn in poke_nums:# print(pn)# print(poke_types)for pt in poke_types:print(f"{pt}{pn}")
2.5、退出循環
while是條件循環,條件為False時退出循環,for循環是遍歷循環,遍歷完成則退出,這都屬于正常退出循環,如果想非正常退出循環,分為強制退出當次循環和退出整個循環,分別使用關鍵字continue
和break
來實現
-
break
退出整個循環
# (1) 退出while循環 while True:userInput = input("請輸入一個數字(輸入q退出):")# 選擇退出機制if userInput.upper() == "Q":breaknumber = int(userInput)square = number ** 2print(f"{number} 的平方是 {square}")print("程序結束")# (2) 退出 for循環 # 查找1-100中第一個能整除13的非零偶數 for i in range(10):userInput = input("請輸入一個數字(輸入q退出):")# 選擇退出機制if userInput.upper() == "Q":breaknumber = int(userInput)square = number ** 2print(f"{number} 的平方是 {square}")print("程序結束")# 如果是循環嵌套,break強制退出所在的那層循環,不是退出多層循環
-
continue
退出當次循環
# 打印1-100中能整除13的數 for i in range(100):if i % 13 != 0:continueprint("1-獲取i值:", i)for i in range(100):if i % 13 == 0:print("2-獲取i值:", i) """1-獲取i值: 01-獲取i值: 131-獲取i值: 261-獲取i值: 391-獲取i值: 521-獲取i值: 651-獲取i值: 781-獲取i值: 912-獲取i值: 02-獲取i值: 132-獲取i值: 262-獲取i值: 392-獲取i值: 522-獲取i值: 652-獲取i值: 782-獲取i值: 91 """
三、 今日作業
-
編寫一個程序,判斷一個字符是否為元音字母(a、e、i、o、u,包括小寫和大寫)。如果是元音字母,則輸出"是元音字母",否則輸出"不是元音字母"。
-
統計元音字母:編寫一個程序,接受用戶輸入的一段文本,統計其中元音字母(a、e、i、o、u)的個數,并輸出結果。
-
計算1-2+3-4+......-1000最終的結果,能整除13的數不參與計算
-
身份證號碼的倒數第二位數字是奇數,表示性別為男性,否則為女性,引導用戶輸入身份證號,先判斷是否為18位,再判斷性別。
-
計算初始本金為1萬,年利率為0.0325的情況下,需要多少年才能將本金和利息翻倍,即本金和利息的總和達到原來的兩倍。
-
編寫一個程序,生成斐波那契數列的第20個數字(斐波那契數列是指從0和1開始,后面的每一項都是前兩項的和)
0 1 1 2 3 5 8 ....
-
編寫一個程序,接受用戶輸入的一個整數,判斷該數是否是素數(只能被1和自身整除的數)。注意,素數的定義是大于1的自然數,只能被1和自身整除,沒有其他的正因數。
-
猜數字游戲
1.首先,程序使用random.randint函數產生一個1~10之間的隨機數。 2.然后,程序通過for循環提示玩家輸入一個猜測的數字,玩家可以輸入一個1~10之間的整數。 3.如果玩家猜對了數字,程序輸出恭喜玩家的信息并結束游戲;如果玩家猜錯了,程序會根據玩家輸入的數字與隨機數之間的大小關系來提示玩家是否猜對,并在每次猜錯后告訴玩家還剩下幾次機會。 4.如果玩家在三次機會內猜對了數字,程序輸出恭喜玩家的信息并結束游戲;否則程序輸出很遺憾的信息并結束游戲。
-
分支嵌套
在選座購票中擴寫,引導用戶輸入【普通票/學生票/老年票】,然后分支判斷。
print("歡迎來到電影訂票系統!") print("請選擇您要進行的操作:") print("1. 查詢電影場次") print("2. 選座購票") print("3. 查看訂單信息") ? choice = int(input("請輸入您的選擇(1-3):")) ? if choice == 1:print("正在查詢電影場次...")# 執行查詢電影場次的代碼 elif choice == 2:print("正在選座購票...") ? elif choice == 3:print("正在查看訂單信息...")# 執行查看訂單信息的代碼 else:print("無效的選擇!請重新運行程序并輸入有效的選項。") ?
-
打印一個nxn的矩陣,每個元素的值等于其所在行數和列數之和。
// 比如4*4矩陣 ? 2 3 4 5 3 4 5 6 4 5 6 7 5 6 7 8
-
打印一個如下的九九乘法表?
""" 1. 編寫一個程序,判斷一個字符是否為元音字母(a、e、i、o、u,包括小寫和大寫)。如果是元音字母, 則輸出"是元音字母",否則輸出"不是元音字母"。 """ char = input("請輸入一個字母") if char.lower() in "aeiou":print("是元音字母") else:print("不是元音字母")""" 2. 統計元音字母:編寫一個程序,接受用戶輸入的一段文本,統計其中元音字母(a、e、i、o、u)的個數,并輸出結果。 """ data = input("請輸入一段文本:") count = 0 for char in data:if char.lower() in "aeiou":count += 1 print("元音字母出現次數:", count)""" 3. 計算1-2+3-4+......-1000最終的結果,能整除13的數不參與計算 """ ret = 0 for i in range(1001):# 如果能整除13就不參與計算if i % 13 == 0:continueif i % 2 == 0:ret -= i # ret = ret - ielse:ret += i # ret = ret + iprint(ret)""" 4. 身份證號碼的倒數第二位數字是奇數,表示性別為男性,否則為女性,引導用戶輸入身份證號,先判斷是否為18位,再判斷性別。 """ uid = input("請輸入您的身份證號碼:") if len(uid) == 18:gender_val = int(uid[-2])if gender_val % 2 == 0:print("女性")else:print("男性")""" 5. 計算初始本金為1萬,年利率為0.0325的情況下,需要多少年才能將本金和利息翻倍,即本金和利息的總和達到原來的兩倍。 base = 10000 rate = 0.0325 total = base # 回收的錢 存一年后:total = 10000+ 10000*0.0325 # 10325 存兩年后:total = 10325+ 10325*0.0325 # 10660 存三年后:total = 10660+ 10660*0.0325 # 存n年后: total = total+ total * rate """ base = 10000 rate = 0.0325 total = baseyear = 0 while total < 2 * base:total = total + total * rateprint(total)year += 1 print(year)""" (6) 編寫一個程序,生成斐波那契數列的第20個數字(斐波那契數列是指從0和1開始,后面的每一項都是前兩項的和) """ pre = 0 current = 1 for _ in range(18): # _ 因為i就沒用到,所以用_代替,因為是第20個數字,所以循環18次,之前包含了pre=0和current=1next_num = pre + currentprint("next:", next_num)pre = currentcurrent = next_num# (7) 編寫一個程序,接受用戶輸入的一個整數,判斷該數是否是素數(只能被1和自身整除的數)。注意,素數的定義是大于1的自然數,只能被1和自身整除,沒有其他的正因數。 # 方案1 0 和1 不是素數 num = int(input("請輸入一個大于1的整數:")) flag = True # 變量標志位 用來判斷循環是否是正常退出 for i in range(2, num):if num % i == 0:flag = Falsebreak if flag:print(f"{num}是素數") else:print(f"{num}不是素數")# 擴展----方案2: for-else 必須要有if..break """ for item in sequence:# 迭代操作if condition:# 滿足條件時執行的操作break else:# 在循環結束后執行的操作 """ num = int(input("請輸入一個大于1的整數:"))for i in range(2, num):if num % i == 0:print(f"{num}不是素數")break else:print(f"{num}是素數")# break退出,走了if判斷的執行操作,走了break 就不會在執行else 如果沒走if..break 就會走else # if判斷成功了一套邏輯,if判斷沒成功,另外一套邏輯# (8) 猜數字游戲 """1.首先,程序使用random.randint函數產生一個1~10之間的隨機數。 2.然后,程序通過for循環提示玩家輸入一個猜測的數字,玩家可以輸入一個1~10之間的整數。 3.如果玩家猜對了數字,程序輸出恭喜玩家的信息并結束游戲;如果玩家猜錯了,程序會根據玩家輸入的數字與隨機數之間的大小關系來提示玩家是否猜對,并在每次猜錯后告訴玩家還剩下幾次機會。 4.如果玩家在三次機會內猜對了數字,程序輸出恭喜玩家的信息并結束游戲;否則程序輸出很遺憾的信息并結束游戲。""" import random# 案例1: secret_num = random.randint(1, 10)for i in range(3):guess_num = int(input("請輸入一個數字,范圍【1-10】:"))# 判斷if guess_num > secret_num:print("猜大了")elif guess_num < secret_num:print("猜小了")else:print("恭喜您,猜對了,數字正是", guess_num)break else: # 彌補不到三次就猜中的問題 走了break 就不走該else,沒走break并且三次機會用完了就會走該elseprint("很遺憾,三次機會已經用完!")# 案例2: secret_num = random.randint(1, 10) max_guesses = 3 for i in range(1, max_guesses + 1):guess_num = int(input("請輸入一個數字,范圍【1-10】:"))# 判斷if guess_num > secret_num:print("猜大了")elif guess_num < secret_num:print("猜小了")else:print("恭喜您,猜對了,數字正是", guess_num)break# 提示remaining_guesses = max_guesses - iif remaining_guesses >0:print(f"您還剩下{remaining_guesses}次機會,請珍惜!")else:print("很遺憾,三次機會已經用完!")break# (9) print("歡迎來到電影訂票系統!") print("請選擇您要進行的操作:") print("1. 查詢電影場次") print("2. 選座購票") print("3. 查看訂單信息")choice = int(input("請輸入您的選擇(1-3):"))if choice == 1:print("正在查詢電影場次...")# 執行查詢電影場次的代碼 elif choice == 2:print("正在選座購票...")# 普通票/學生票/老年票ticket_type = input("""1. 學生票2. 老年票3. 普通票""")if ticket_type == "1":print("正在購買學生票")elif ticket_type == "2":print("正在購買老年票")elif ticket_type == "3":print("正在購買普通票") elif choice == 3:print("正在查看訂單信息...")# 執行查看訂單信息的代碼 else:print("無效的選擇!請重新運行程序并輸入有效的選項。")# (10)打印一個nxn的矩陣,每個元素的值等于其所在行數和列數之和。 n = 5 for r in range(1, n + 1):for c in range(1, n + 1):print(f"{r + c}\t", end="")print()# (11)九九乘法表 for r in range(1, 10):for c in range(1, r + 1):print(f"{c}*{r}={r * c}\t", end="")print()