当前版本:
简介
? ? while循环是一种在满足某个条件时重复执行代码块的结构。它会在每次执行代码块后检查条件是否为真,如果是则继续执行,直到条件不再满足为止。
? ? 这种循环结构非常灵活,可以用于根据不同的条件重复执行特定的任务,例如遍历列表、处理数据,甚至是通过用户的输入来控制程序流程。
????????
目录
????????
while 循环的语法非常简单:
while 条件:
循环体
????????
那么什么为真?什么为假呢?
python 中 True 表示真,False 表示假,我们可以直接对 while 判定真或假,比如:
while True: # 直接指定条件为真
print("条件为真,执行代码...")
结果(无限循环):
????????
如果指定为假,则不会执行循环体的代码
while False: # 直接指定条件为假
print("条件为真,执行代码...")
print("========= 结束 =========")
????????
当然,也支持取反
while not False: # 对假取反,为真
print("条件为真,执行代码...")
print("========= 结束 =========")
????????
注意:编写一个无限循环(条件永远为真),程序将永远在循环中执行,导致无法终止。所以,在使用 while 循环时,一定要确保有办法让条件在某些情况下为假,以避免进入无限循环的状态。例如:
# 定义一个整数变量
w = 1
# 判断这个变量小于5
while w < 5:
print(f"当前变量为:{w}")
w += 1 # 每循环1次,变量+1
????????
由于 while 循环属于条件判断,所以也支持 else
# 定义一个变量
w = 1
while w < 3: # 变量小于3执行这里的代码块
print(f"当前w的值为:{w}")
w += 1
else: # 变量不小于3执行这里的代码块
print("w不再小于3")
????????
总结
条件为 Ture 或 False,这也就意味着判断条件可以是:
- ?>、<、=、!=、>=、<=
- and、or、not
- in、not in
综合使用:
while a>1 and b<2 and c in (1,2,3): pass
????????
当程序满足某个条件或者达到了预期的目标时,可以跳出循环,避免继续执行不必要的循环迭代,可以提高代码的效率和性能。python 中给出了2种跳出循环的方法:
????????
【案例一】跳出整个循环
# 定义一个整数变量
w = 0
# 判断这个变量小于5才循环
while w < 5:
w += 1 #每次循环都+1
if w == 3:
# 如果w=3,那么跳出整个循环
break
print(f"当前变量为:{w}")
????????
【案例二】跳出当前循环
# 定义一个整数变量
w = 0
# 判断这个变量小于5才循环
while w < 5:
w += 1 #每次循环都+1
if w == 3:
# 如果w=3,那么跳出此次循环
continue
print(f"当前变量为:{w}")
????????
在Python中,while循环本身并不支持单行写法。如果需要使用单行的话可以利用分号来实现:
x = 1
while x < 5: print(x); x += 1
????????
【案例一】是否删除某个文件
# 定义一个用户输入的变量,用于判断
user_input = ""
# 如果这个变量不是y和n则循环询问
while user_input != "y" and user_input != "n":
# 给这个变量赋值用户输入的字符
user_input = input("是否删除文件file.txt(y/n): ")
# 变量为y:删除文件
if user_input == "y":
print("开始删除文件file.txt")
# 变量为n:不删除文件
elif user_input == "n":
print("不删除文件file.txt")
????????
【案例二】输入透明密码
# 导入用户输入安全密码的库
import getpass
root_pwd = "abc123" # 设定root的真正密码
user_pwd = "" # 用户输入的密码
# 如果密码不正确则无限循环
while user_pwd != root_pwd:
# 输入密码(输入时为透明)
user_pwd = getpass.getpass("请输入root密码: ")
if user_pwd == root_pwd:
print(f"[INFO] 您输入的密码为:{user_pwd},正确!")
else:
print(f"[ERROR] 您输入的密码为:{user_pwd},错误!")
????????
先通过 open 打开文件,再使用 while 逐行读取
file_path = r"D:\file.txt"
# 打开文件
with open(file_path, "r") as file:
# 将文件内容赋值给变量
line = file.readline()
# 逐行读取内容
while line:
print(f"当前行内容为:{line}")
line = file.readline()
????????
import random
# 生成一个随机数作为答案
answer = random.randint(1, 10)
# 初始化猜测次数
guesses = 0
# 游戏开始提示
print("欢迎来到猜数字游戏!范围:1~10")
# 游戏主循环
while True:
# 玩家输入猜测的数字
guess = int(input("请猜一个数字: "))
# 猜测次数增加
guesses += 1
# 检查猜测是否正确
if guess == answer:
print("恭喜你,猜对了!")
break
elif guess < answer:
print("很遗憾,猜小了。")
else:
print("很遗憾,猜大了。")
# 打印玩家猜测的次数
print(f"恭喜玩家在第{guesses}次猜中数字,奖励一把枪")
str = """
/ __)
___ __ __ ___ ( (_ __ __ __
(___() / _\ / _\/ __) ) _)\ \ \ / /__\\
(__)/ \ \/ ( (__\ (__\ V /(__/
\_/\/
"""
print(str)