0) 参考文章
1) while循环
- 语法
-
while 表达式: 循环语句块
- 案例
-
# 案例1: 打印10次hello world count = 0 # (1) 初始变量 while count < 10: # (2) 判断表达式 print("hello world") count += 1 # (3) 步进语句 count = count+1 # 案例2: 打印1-100 # 方式1: n = 0 # (1) 初始变量 while n < 100: # (2) 判断表达式 # 逻辑代码块开始 print(n + 1) # 原本输出0-99, 现在输出1-100 # 逻辑代码块结束 n += 1 # (3) 步进语句 count = count+1 # 方式2: n = 0 # (1) 初始变量 while n < 100: # (2) 判断表达式 n += 1 # (3) 步进语句 count = count+1 # 逻辑代码块开始 print(n) # 先+1 再输出, 结果1-100 # 逻辑代码块结束 # 方式3: n = 10 # (1) 初始变量 while n < 111: # (2) 判断表达式 print(n) # 输出10-110 n += 1 # (3) 步进语句 count = count+1 # 案例3: 打印100-1 # 方式1 n = 0 # (1) 初始变量 while n < 100: # (2) 判断表达式 # 逻辑代码块开始 print(100-n) # 随着n的变大,输出数字变小,,总和不变,完成倒序输出 # 逻辑代码块结束 n += 1 # (3) 步进语句 count = count+1 # 方式2 n = 100 # n: 100-1地变化 while n >= 1: print(n) # 从100开始,依次递减,直到值为1 n -= 1
2) for循环
- 语法
-
for i in 容器对象: 循环语句
- 案例
-
# 案例1: name = "yuan" for i in name: # print("hello world") # 4个字符 输出4次 hello world # print(i,type(i)) # 依次输出 y u a n print(i.upper()) # 依次输出 Y U A N # 案例2: l = [1, 2, 3, 4, 5] ret = 0 for i in l: # 依次遍历5个元素: 1,2,3,4,5 ret += i print(ret) # 15 # 案例3: l = [12, 34, 556, 41, 79, 88, 123, 456] ret = 0 for i in l: ret += i print(ret)
3) 案例
- while累积和
-
# 计算1-100的和 count = 1 # 初始化 s = 0 while count <= 1000: # 逻辑代码块开始 s += count # 每次循环的值都累加在s中 # 逻辑代码块结束 count += 1 # 控制循环逻辑 print(s)
- while随机验证码
-
# 正常拼接 s1 = "hello" s2 = "yuan" print(s1 + s2) # helloyuan import random import string # 全字符: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ print(string.digits+string.ascii_lowercase+string.ascii_uppercase) # 全字符: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ # string.ascii_letters: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ print(string.digits+string.ascii_letters) # 生成随机100个字符 count = 0 s = "" while count < 100: # 逻辑代码块开始 char = random.choice(string.digits+string.ascii_letters) # print(char) s += char # 存储字符 # 逻辑代码块结束 count += 1 print("s:::",s)
- for遍历元素
-
for i in range(1, 101): # 起始 结束 步调1 print(i) for i in range(55, 90): # 起始 结束 步调1 print(i) for i in range(1, 101, 1): print(i) # [1,2,3,4,...100] for i in range(1, 101, 2): # 起始 结束 步调2 print(i) # [1,3,5,7,9,....99] for i in range(1, 101, 3): # 起始 结束 步调3 print(i) # [1,4,7,10,...] # step默认为1,如果是正数,范围就是从小到大,如果是负数,范围就是从大到小 for i in range(100, -1, -1): # 从大到小 倒序 print(i) # [100,99,...,3,2,1,0]
4) 嵌套案例
- 打印偶数
-
for i in range(1, 101): # 遍历[1,100] if i % 2 == 0: # 输出偶数 # i是偶数 print(i) for i in range(2, 101,2): # 同上 输出偶数 print(i)
- 打印指定数
-
# 打印出从 1 到 100 的所有整数, # 将整除 3 的数字打印为 "Fizz", # 整除 5 的数字打印为 "Buzz", # 同时整除 3 和 5 的数字打印为 "FizzBuzz"。 for i in range(1, 101): # 从1到100 if i % 3 == 0 and i % 5 == 0: print(f"{i}:FizzBuzz") # 同时整除3和55 elif i % 3 == 0: print(f"{i}:Fizz") # 整除3 elif i % 5 == 0: print(f"{i}:Buzz") # 整除5 else: print(f"{i}:各种情况都不符合!") print(f"完成数字{i}判断!")
- 无限循环
-
import random coin = 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 += 20 exp += 20 else: print("没打过史莱姆!") coin -= 20 exp -= 20 blood -= 20 elif choice == "2": # 逃跑的逻辑 print("逃跑ing") coin -= 20 else: 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.upper() == "Y": num = int(input("购买几瓶药水?")) coin -= 1 * num blood += 10 * num print(f"当前玩家的金币:{coin},血值:{blood}") elif is_buy.upper() == "N": print("退出商店!") else: print("无效输入!") print(f""" 玩家信息: 金币:{coin} 经验值:{exp} 血值: {blood} """) print("游戏结束")
- 扑克牌
-
poke_types = ['♥️', '♦️', '♠️', '♣️'] poke_nums = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A'] for pn in poke_nums: # 遍历数字 遍历13次 # print(pn) # 打印数字 # print(poke_types) # 打印类型 for pt in poke_types: # 遍历类型 遍历4次 print(f"{pt}{pn}", end=" ") # 拼接 print() # 利用默认的"\n"机制进行分割 4个一组
5) 跳出循环
- 退出while循环
-
while True: userInput = input("请输入一个数字(输入q退出):") # 选择退出机制 if userInput.upper() == "Q": break number = int(userInput) square = number ** 2 print(f"{number} 的平方是 {square}") print("程序结束")
- 退出for循环
-
for i in range(10): userInput = input("请输入一个数字(输入q退出):") # 选择退出机制 if userInput.upper() == "Q": break number = int(userInput) square = number ** 2 print(f"{number} 的平方是 {square}") print("程序结束")
- 跳过循环
-
# 打印除了88以外的1-100所有值 # 方式1 for i in range(1, 101): if i == 88: continue # 退出当次循环,当次continue下面的代码不再执行 print(i) # 打印除去88的数字 # 方式2 for i in range(1, 101): if i != 88: print(i)