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('你的輸入有誤,請重新輸入!')