Python基礎--流程控制語句--練習實例

1、條件判斷if-elif-else,沒什麼好講,舉一個例子

# if-elif-else語句
# 語法:
#   if 條件表達式 :
#       代碼塊
#   elif 條件表達式 :
#       代碼塊
#   elif 條件表達式 :
#       代碼塊
#   elif 條件表達式 :
#       代碼塊
#   else :
#       代碼塊
#       
# 執行流程:
#   if-elif-else語句在執行時,會自上向下依次對條件表達式進行求值判斷,
#       如果表達式的結果爲True,則執行當前代碼塊,然後語句結束
#       如果表達式的結果爲False,則繼續向下判斷,直到找到True爲止
#       如果所有的表達式都是False,則執行else後的代碼塊
#   if-elif-else中只會有一個代碼塊會執行

age = 68

if age >= 18 and age < 30 :
    print('你已經成年了!')
elif age >= 30 and age < 60 :
    print('你已經中年了!')
elif age >= 60 :
    print('你已經退休了!')

2、循環語句--先介紹while循環

# 循環語句
# 循環語句可以使指定的代碼塊重複指定的次數
# 循環語句分成兩種,while循環 和 for循環
# while循環
# 語法:
#   while 條件表達式 :
#       代碼塊
#   else :
#       代碼塊
# 執行流程:
#   while語句在執行時,會先對while後的條件表達式進行求值判斷,
#       如果判斷結果爲True,則執行循環體(代碼塊),
#       循環體執行完畢,繼續對條件表達式進行求值判斷,以此類推,
#       直到判斷結果爲False,則循環終止,如果循環有對應的else,則執行else後的代碼塊

i = 0
while i < 10 :
    i += 1
    print(i,'hello')
else :
    print('else中的代碼塊')

3、循環嵌套案例

i = 0
while i < 5:
    j = 0
    while j < i + 1:
        print("* ",end='')
        j += 1
    print()
    i += 1

結果如下:

* 
* * 
* * * 
* * * * 
* * * * * 

4、九九乘法表

# 練習1:
#   打印99乘法表
#   1*1=1
#   1*2=2 2*2=4
#   1*3=3 2*3=6 3*3=9
#   ...                 9*9=81

# 創建一個外層循環來控制圖形的高度
i = 0
while i < 9:
    i += 1
    
    # 創建一個內層循環來控制圖形的寬度
    j = 0
    while j < i:
        j += 1
        print(f"{j}*{i}={i*j} ",end="")

    print()

5、質數練習

# 求100以內所有的質數
# 創建一個循環,求1-100以內所有的數
i = 2
while i <= 100:
    
    # 創建一個變量,記錄i的狀態,默認認爲i是質數
    flag = True

    # 判斷i是否是質數
    # 獲取所有可能成爲i的因數的數
    j = 2 
    while j < i:
        # 判斷i能否被j整除
        if i % j == 0:
            # i能被j整除,證明i不是質數,修改flag爲False
            flag = False
        j += 1
    # 驗證結果並輸出
    if flag :
        print(i)   

    i += 1

6、break和continue

# break
# break可以用來立即退出循環語句(包括else)
# continue
# continue可以用來跳過當次循環
# break和continue都是隻對離他最近的循環起作用
# pass
# pass是用來在判斷或循環語句中佔位的

# 創建一個5次的循環
# i = 0
# while i < 5:
#     if i == 3:
#         break
#     print(i)
#     i += 1
# else :
#     print('循環結束')

# i = 0
# while i < 5:
#     i += 1
#     if i == 2:
#         continue
#     print(i)
# else :
#     print('循環結束')

i = 0
if i < 5:
    pass

7、質數練習優化

# 模塊,通過模塊可以對Python進行擴展
# 引入一個time模塊,來統計程序執行的時間
from time import *
# time()函數可以用來獲取當前的時間,返回的單位是秒
# 獲取程序開始的時間
# 優化前:
#   10000個數 12.298秒
#   100000個數 沒有結果
# 第一次優化
#   10000個數 1.577秒
#   100000個數 170.645秒
# 第二次優化
#   10000個數 0.068秒
#   100000個數 1.646秒
#
# 36的因數
#   2 18
#   3 12
#   4 9
#   6 6
#   
begin = time()

i = 2
while i <= 100000:
    flag = True
    j = 2 
    while j <= i ** 0.5:
        if i % j == 0:
            flag = False
            # 一旦進入判斷,則證明i一定不是質數,此時內層循環沒有繼續執行的必要
            # 使用break來退出內層的循環
            break
        j += 1
    if flag :
        # print(i)  
        pass
    i += 1

# 獲取程序結束的時間
end = time()

# 計算程序執行的時間
print("程序執行花費了:",end - begin , "秒")

8、《唐僧大戰白骨精》小遊戲練習

# 顯示歡迎信息
print('-'*20,'歡迎光臨《唐僧大戰白骨精》','-'*20)

# 顯示身份選擇的信息
print('請選擇你的身份:')
print('\t1.唐僧')
print('\t2.白骨精')
# 遊戲的身份選擇
player_choose = input('請選擇[1-2]:')

# 打印一條分割線
print('-'*66)

# 根據用戶的選擇來顯示不同的提示信息
if player_choose == '1':
    # 選擇1
    print('你已經選擇了1,你將以->唐僧<-的身份來進行遊戲!')
elif player_choose == '2':
    # 選擇2
    print('你竟然選擇了白骨精,太不要臉了,你將以->唐僧<-的身份來進行遊戲!')
else :
    # 選擇3
    print('你的輸入有誤,系統將自動分配身份,你將以->唐僧<-的身份來進行遊戲!')

# 進入遊戲

# 創建變量,來保存玩家的生命值和攻擊力
player_life = 2 # 生命值
player_attack = 2 # 攻擊力

# 創建一個變量,保存boss的生命值和攻擊力
boss_life = 10
boss_attack = 10

# 打印一條分割線
print('-'*66)
# 顯示玩家的信息(攻擊力、生命值)
print(f'唐僧,你的生命值是 {player_life} , 你的攻擊力是 {player_attack}')

# 由於遊戲選項是需要反覆顯示的,所以必須將其編寫到一個循環中
while True :
    # 打印一條分割線
    print('-'*66)
    # 顯示遊戲選項,遊戲正式開始
    print('請選擇你要進行的操作:')
    print('\t1.練級')
    print('\t2.打BOSS')
    print('\t3.逃跑')
    game_choose = input('請選擇要做的操作[1-3]:')

    # 處理用戶的選擇
    if game_choose == '1' :
        # 增加玩家的生命值和攻擊力
        player_life += 2
        player_attack += 2
        # 顯示最新的信息
        # 打印一條分割線
        print('-'*66)
        # 顯示玩家的信息(攻擊力、生命值)
        print(f'恭喜你升級了!,你現在的生命值是 {player_life} , 你的攻擊力是 {player_attack}')
    elif game_choose == '2' :
        # 玩家攻擊boss
        # 減去boss的生命值,減去的生命值應該等於玩家的攻擊力
        boss_life -= player_attack 

        # 打印一條分割線
        print('-'*66)
        print('->唐僧<- 攻擊了 ->白骨精<-')
        # 檢查boss是否死亡
        if boss_life <= 0 :
            # boss死亡,player勝利,遊戲結束
            print(f'->白骨精<-受到了 {player_attack} 點傷害,重傷不治死了,->唐僧<-贏得了勝利!')
            # 遊戲結束
            break

        # boss要反擊玩家
        # 減去玩家的生命值
        player_life -= boss_attack 
        print(' ->白骨精<- 攻擊了 ->唐僧<-')
        # 檢查玩家是否死亡
        if player_life <= 0 :
            # 玩家死亡
            print(f'你受到了 {boss_attack} 點傷害,重傷不治死了!GAME OVER')
            # 遊戲結束
            break
    elif game_choose == '3' :
        # 打印一條分割線
        print('-'*66)
        # 逃跑,退出遊戲
        print('->唐僧<-一扭頭,撒腿就跑!GAME OVER')
        break
    else :
        # 打印一條分割線
        print('-'*66)
        print('你的輸入有誤,請重新輸入!')

 

發佈了71 篇原創文章 · 獲贊 5 · 訪問量 6441
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章