Python基礎--Day04--流程控制語句

流程控制語句是計算機編程中用于控制程序執行流程的語句。它們允許根據條件來控制代碼的執行順序和邏輯,從而使程序能夠根據不同的情況做出不同的決策。流程控制實現了更復雜和靈活的編程邏輯。

  • 順序語句

    順序語句是按照編寫的順序依次執行程序中的代碼。代碼會按照從上到下的順序有且僅執行一次。

  • 分支語句

    根據條件的真假來選擇性地執行不同的代碼塊。這使得程序能夠根據不同的情況做出不同的響應。

  • 循環語句

    允許重復執行一段代碼,以便處理大量的數據或重復的任務。循環語句可以用于多次執行相同或類似的代碼塊,從而實現重復操作的需求。

流程控制是編程中的基本概念之一,對于編寫高效、可靠的程序至關重要。

一、 分支語句

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 模式的介紹:

  1. 設置斷點:在需要調試的代碼行上設置斷點,斷點是程序的一個暫停點,當程序執行到斷點時會暫停執行,允許開發者逐行檢查代碼。

  2. 啟動 Debug 模式:在 PyCharm 中,可以通過點擊工具欄上的 "Debug" 按鈕來啟動 Debug 模式,或者使用快捷鍵(通常是 F9)。

  3. 逐行執行:在 Debug 模式下,可以使用調試工具欄上的按鈕(如「Step Over」、「Step Into」和「Step Out」)逐行執行代碼。Step Over 會執行當前行并跳轉到下一行,Step Into 會進入函數調用并逐行執行函數內部代碼,Step Out 會執行完當前函數并跳出到調用該函數的位置。

  4. 變量監視:在 Debug 模式下,可以查看變量的值和狀態。在調試工具欄的「Variables」窗口中,可以看到當前作在 PyCharm 中,Debug 模式是一種強大的調試工具,可以幫助開發者在代碼執行過程中逐行跟蹤和分析程序的行為。

image

循環語句

循環語句是編程中的一種控制結構,用于重復執行特定的代碼塊,直到滿足特定的條件為止。它允許程序根據需要多次執行相同或類似的操作,從而簡化重復的任務。

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類封裝了常用的字符串如下:

image

# 假設有一個變量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循環是遍歷循環,遍歷完成則退出,這都屬于正常退出循環,如果想非正常退出循環,分為強制退出當次循環和退出整個循環,分別使用關鍵字continuebreak來實現

  • 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
"""

三、 今日作業

  1. 編寫一個程序,判斷一個字符是否為元音字母(a、e、i、o、u,包括小寫和大寫)。如果是元音字母,則輸出"是元音字母",否則輸出"不是元音字母"。

  2. 統計元音字母:編寫一個程序,接受用戶輸入的一段文本,統計其中元音字母(a、e、i、o、u)的個數,并輸出結果。

  3. 計算1-2+3-4+......-1000最終的結果,能整除13的數不參與計算

  4. 身份證號碼的倒數第二位數字是奇數,表示性別為男性,否則為女性,引導用戶輸入身份證號,先判斷是否為18位,再判斷性別。

  5. 計算初始本金為1萬,年利率為0.0325的情況下,需要多少年才能將本金和利息翻倍,即本金和利息的總和達到原來的兩倍。

  6. 編寫一個程序,生成斐波那契數列的第20個數字(斐波那契數列是指從0和1開始,后面的每一項都是前兩項的和)

    0 1 1 2 3 5 8 ....
  7. 編寫一個程序,接受用戶輸入的一個整數,判斷該數是否是素數(只能被1和自身整除的數)。注意,素數的定義是大于1的自然數,只能被1和自身整除,沒有其他的正因數。

  8. 猜數字游戲

    1.首先,程序使用random.randint函數產生一個1~10之間的隨機數。
    2.然后,程序通過for循環提示玩家輸入一個猜測的數字,玩家可以輸入一個1~10之間的整數。
    3.如果玩家猜對了數字,程序輸出恭喜玩家的信息并結束游戲;如果玩家猜錯了,程序會根據玩家輸入的數字與隨機數之間的大小關系來提示玩家是否猜對,并在每次猜錯后告訴玩家還剩下幾次機會。
    4.如果玩家在三次機會內猜對了數字,程序輸出恭喜玩家的信息并結束游戲;否則程序輸出很遺憾的信息并結束游戲。
  9. 分支嵌套

    在選座購票中擴寫,引導用戶輸入【普通票/學生票/老年票】,然后分支判斷。

    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("無效的選擇!請重新運行程序并輸入有效的選項。")
    ?
  10. 打印一個nxn的矩陣,每個元素的值等于其所在行數和列數之和。

    // 比如4*4矩陣
    ?
    2   3   4   5   
    3   4   5   6   
    4   5   6   7   
    5   6   7   8
  11. 打印一個如下的九九乘法表?

image-20240117122014975

"""
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()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91194.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【同濟大學】雙速率自動駕駛架構LeAD:端到端+LLM,CARLA實測93%路線完成率,性能SOTA!

近年來&#xff0c;隨著端到端的技術快速發展將自動駕駛帶到了一個新高度&#xff0c;并且取得了非常亮眼的成績。由于感知限制和極端長尾場景下訓練數據覆蓋不足&#xff0c;模型在高密度復雜交通場景下和不規則交通情況下的處理能力不足&#xff0c;導致在開放道路上大規模部…

github與git新手教程(快速訪問github)

0 序言 作為一個開發者&#xff0c;你必須知道github和git是什么&#xff0c;怎么使用。 github是一個存儲代碼等資源的遠程倉庫&#xff0c;一個大型項目往往需要很多人共同協作開發&#xff0c;而大家如何協同開發的進度與分工等要求需要有一個統一開放保存代碼的平臺。git…

Windows環境下安裝Python和PyCharm

可以只安裝PyCharm嗎&#xff1f;不可以&#xff01;&#xff01;&#xff01; 開發Python應用程序需要同時安裝Python和PyCharm。Python是一種編程語言&#xff0c;PyCharm是一個專門為Python開發設計的集成開發環境&#xff0c;提供豐富的功能以簡化編碼過程。 一、前期準備…

Qt 嵌入式系統資源管理

在嵌入式系統中&#xff0c;資源&#xff08;CPU、內存、存儲、網絡等&#xff09;通常非常有限&#xff0c;因此高效的資源管理對 Qt 應用的穩定性和性能至關重要。本文從內存優化、CPU 調度、存儲管理到電源控制&#xff0c;全面解析 Qt 嵌入式系統資源管理的關鍵技術。 一、…

小杰數據結構(one day)——心若安,便是晴天;心若亂,便是陰天。

1.數據結構計算機存儲、組織數據的方式&#xff1b;有特定關系的數據元素集合&#xff1b;研究數據的邏輯結構、物理結構&#xff08;真實存在&#xff09;和對應的算法&#xff1b;新結構仍保持原結構類型&#xff1b;選擇更高的運行或存儲效率的數據結構。邏輯結構——面向問…

力扣面試150(44/150)

7.30 155. 最小棧 設計一個支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常數時間內檢索到最小元素的棧。 實現 MinStack 類: MinStack() 初始化堆棧對象。void push(int val) 將元素val推入堆棧。void pop() 刪除堆棧頂部的元素。int top() 獲取堆棧頂…

Linux實戰:從零搭建基于LNMP+NFS+DNS的WordPress博客系統

前言 在數字化時代&#xff0c;擁有一個個人博客是技術愛好者展示成果、分享經驗的重要方式。本文將帶您從零開始&#xff0c;在Linux環境下通過兩臺服務器協作&#xff0c;搭建一個功能完整的WordPress博客系統。我們將整合LNMP架構、NFS文件共享和DNS域名解析服務&#xff0c…

Apache Ignite 的對等類加載(Peer Class Loading, P2P Class Loading)機制

這段內容是關于 Apache Ignite 的“對等類加載”&#xff08;Peer Class Loading, P2P Class Loading&#xff09;機制的詳細說明。這是 Ignite 為了簡化開發而設計的一個非常強大的功能&#xff0c;但同時也存在一些安全和性能上的考量。 下面我將用通俗易懂的語言 結構化解…

預過濾環境光貼圖制作教程:第四階段 - Lambert 無權重預過濾(Stage 3)

在完成高光反射的 GGX 預過濾后,我們還需要處理環境光的漫反射部分。本階段(Stage 3)將基于 Lambert 分布對環境貼圖進行無權重預過濾,生成用于漫反射計算的環境數據。與高光反射的方向性不同,漫反射是光線在粗糙表面的均勻散射,因此需要用更適合均勻分布的 Lambert 模型…

Spring與SpringBoot:從手動擋到自動擋的Java開發進化論

大家好&#xff01;我是程序員良辰&#xff0c;今天我們來聊聊Java開發界的兩位"重量級選手"&#xff1a;Spring 和 SpringBoot。它們之間的關系就像手動擋汽車和自動擋汽車——一個給你完全的控制權但操作復雜&#xff0c;一個讓你輕松上路但保留了切換手動模式的能…

1.4.Vue 的模板事件

Vue 的模板事件1. 最常見和推薦的做法。將復雜的邏輯封裝在 methods 中。<!-- ? 正確&#xff1a;調用 methods 中的方法 --> <button click"handleClick">點擊我</button>new Vue({methods: {handleClick(event) {// 這里可以寫任意語句if (this…

SQLite 子查詢詳解

SQLite 子查詢詳解 引言 SQLite 是一種輕量級的數據庫&#xff0c;以其簡單、易用和跨平臺而著稱。在數據庫查詢中&#xff0c;子查詢是一個非常重要的概念&#xff0c;它允許我們在查詢中使用查詢結果。本文將詳細講解 SQLite 中的子查詢&#xff0c;包括其定義、用法以及在實…

可以組成網絡的服務器 - 華為OD統一考試(JavaScript 題解)

題目描述 在一個機房中,服務器的位置標識在n*m的整數矩陣網格中,1表示單元格上有服務器,0表示沒有。如果兩臺服務器位于同一行或者同一列中緊鄰的位置,則認為它們之間可以組成一個局域網,請你統計機房中最大的局域網包含的服務器個數。 輸入描述 第一行輸入兩個正整數,…

redis,MongoDB等未授權訪問靶場復現

redis未授權訪問在docker中啟動vulhub對應的靶場目錄&#xff1a;cd /vulhub-master/redis/4-unacc在kali上安裝redis程序進行服務連接安裝redis apt-get install redis redis鏈接 redis-cli -h IP -p 端口輸入info可以查看信息接下來我們使用redis-rogue-server來獲取命令執行…

設計模式:代理模式 Proxy

目錄問題解決方案結構代碼代理是一種結構型設計模式&#xff0c;讓你能夠提供對象的替代品或其占位符。代理控制著對于原對象的訪問&#xff0c;并允許在將請求提交給對象前后進行一些處理。 問題 為什么要控制對于某個對象的訪問呢&#xff1f; 舉個例子&#xff1a; 有這樣一…

Linux零基礎Shell教學全集(可用于日常查詢語句,目錄清晰,內容詳細)(自學尚硅谷B站shell課程后的萬字學習筆記,附課程鏈接)

此文章為學習了 尚硅谷B站課程 后的學習筆記 【尚硅谷】Shell腳本從入門到實戰_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1hW41167NW/?spm_id_from333.337.search-card.all.click&vd_source68e0bbe20c8b1102b59ced40f67db628注意&#xff1a;需要先學Linux基礎…

GitLab 中的分支和標簽的定義及操作

&#xff08;一&#xff09;GitLab 中的分支和標簽的定義及操作 1. 分支&#xff08;Branch&#xff09; 定義&#xff1a; 分支是代碼倉庫中的獨立開發路徑&#xff0c;允許你在不影響主線&#xff08;通常是 main 或 master 分支&#xff09;的情況下&#xff0c;進行實驗、開…

第2章 cmd命令基礎:常用基礎命令(3)

Hi~ 我是李小咖&#xff0c;主要從事網絡安全技術開發和研究。 本文取自《李小咖網安技術庫》&#xff0c;歡迎一起交流學習&#x1fae1;&#xff1a;https://imbyter.com 本節介紹的命令有顯示系統信息&#xff08;systeminfo&#xff09;、啟動指定程序&#xff08;start&am…

RabbitMQ 發送方確認的兩大工具 (With Spring Boot)

核心概念解析 發布者確認機制的核心思想是&#xff1a;將消息投遞的可靠性從“盡力而為”提升為“契約保證”。生產者不再是“發后不理”&#xff0c;而是與 Broker 建立一個雙向的溝通渠道。 在 Spring AMQP 的封裝下&#xff0c;這個機制主要由兩個回調接口實現&#xff1a; …

KONG API Gateway中的核心概念

在使用Kong API Gateway&#xff08;API網關&#xff09;時&#xff0c;理解其核心概念是掌握其工作原理的基礎。這些概念既體現了Kong的設計哲學&#xff0c;也決定了它如何適配復雜的API管理場景&#xff08;如微服務、多團隊協作等&#xff09;。本文將系統梳理Kong的核心概…