day4 whille 循环和while关键字

本文详细介绍了Python中的while循环,包括语法、执行过程,以及与for循环的关系和选择建议。同时,讨论了continue、break关键字在循环中的应用,并提到了循环else的特殊用法,强调了else块在循环正常结束时才会执行的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

whille 循环和while关键字

1.while循环:

语法:

while 条件语句:
循环体

说明:

while - 关键字;固定写法
条件语句 - 和if中的条件语句的要求一样
: - 固定写法
循环体 - 结构上,和while保持一个缩进的一条或者多条语句;逻辑上,需要重复执行的代码

执行过程:不断判断条件语句是否为True,如果是就执行循环体,否则循环就结束。

# 练习1:打印1~100所有的整数
x = 1
while x <= 100:
    print(x)
    x += 1


# 练习2: 打印1-100所有的偶数:2,4,6,8,10,...,100
print('===============================')
x = 2
while x <= 100:
    print(x)
    x += 2


# 练习3:打印:100, 98, 96, 94, 92,...,4, 2, 0
x = 100
while x >= 0:
    print(x)
    x -= 2

2. for循环和while循环的选择

关系:

for能解决的问题,while循环都可以解决;while循环能解决的问题,for循环不一定可以解决。
但是for循环比起while循环,控制次数更简单(容易)

使用建议:

​ 能用for循环解决的问题都用for,解决不了的才考虑while。
​ 循环次数确定 - 使用for
​ 循环次数不确定 - 只能使用while循环

练习:提示用户不断输入密码,直到输入正确为止
pw = '11029'
i_pw = input('请输入密码:')
while pw != i_pw:
    i_pw = input('密码错误,请重新输入密码:')
# 练习1:猜数字游戏
"""
系统随机产生一个0~100的随机数
用户不断输入数字,直到输入的数字和产生的数字相等,游戏结束。
如果猜错了,给出大了或者小了的提示信息

假设随机数是:30
请输入数字(0~100): 50
大了,再小点儿
请输入数字(0~100):25
小了,再大点儿
请输入数字(0~100):35
大了,再小点儿
...
请输入数字(0~100):30
恭喜你,猜对了!
"""
# 补充:Python创建随机数
from random import randint
# x = randint(10, 20)     # 产生一个10到20的随机数,并且保存到变量x中
num = randint(0, 100)
i_num = -1
while num != i_num:
    i_num = int(input('请输入一个整数(0~100):'))
    if i_num > num:
        print('大了,再小点儿')
    elif i_num < num:
        print('小了,再大点儿')

print('恭喜你,猜对了!')

2.循环关键字

1.continue和break

continue和break都只能出现在循环体中。

continue - 结束一次循环, 每次在执行循环体的时候,如果遇到continue,那么这次循环结束,直接进入下一次循环
break - 结束整个循环, 在执行循环体的时候,如果遇到break,那么整个循环直接结束,不会进入下次循环

for x in range(10):
    if x % 2:
        continue
    print(x)


"""
x = 0: if 0 % 2 -> if 0 -> if False; print(0)
x = 1: if 1 % 2 -> if 1 -> if True  -> continue
x = 2: if 2 % 2 -> if 0 -> if False; print(2)
...
"""
print('-------------------------华丽的分割线--------------------------')
x = 0
while x <= 10:
    print(x)
    if x % 2 == 0:
        x += 3
        continue
    x += 1

"""
x = 0
x <= 10 -> 0 <= 10 -> True -> print(0); if 0 % 2 == 0 -> if True -> x += 3 -> x = 3 -> continue
x <= 10 -> 3 <= 10 -> True -> print(3); if 3 % 2 == 0 -> if False; x += 1 -> x = 4
x <= 10 -> 4 <= 10 -> True -> print(4); if 4 % 2 == 0 -> if True -> x += 3 -> x = 7 -> continue
x <= 10 -> 7 <= 10 -> True -> print(7); if 7 % 2 == 0 -> if False; x += 1 -> x = 8
x <= 10 -> 8 <= 10 -> True -> print(8); if 8 % 2 == 0 -> if True -> x += 3 -> x = 11 -> continue
x <= 10 -> 11 <= 10 -> False -> 整个循环结束

0
3
4
7
8
"""

print('-------------------------华丽的分割线--------------------------')
for x in range(5):
    print(x)
    print('======')
    break
    print('++++++')


print('-------------------------华丽的分割线--------------------------')
for x in range(5):
    print(x)
    if x % 2:
        break

2. while和break

while循环使用的通过格式:

while True:
需要重复执行的代码
if 循环结束的条件:
break

pw = '123456'
while True:
    i_pw = input('请输入密码:')

    if i_pw == pw:
        break

#练习:输入任意一个正整数,求他是几位数?
123 -> 3   981-> 3; 98 -> 2; 982734  -> 6
123 // 10 -> 12 // 10 -> 1 // 10 -> 0
98 // 10  -> 9 // 10 -> 0
982734 // 10 -> 98273 // 10 -> 9827 // 10 -> 982 // 10 -> 98 // 10 -> 9 // 10 -> 0
num = int(input('请输入一个任意正整数:'))
count = 0
while True:
    num //= 10
    count += 1
    if num == 0:
        break
print(count)

3. 循环else

完整的循环结构:
1)完整的for循环
for 变量 in 序列:
循环体
else:
代码段

  1. 完整的while循环
    while 条件语句:
    循环体
    else:
    代码段

else的作用:
else的存在不会影响原来循环的执行;
如果循环不是因为遇到break而结束的else后的代码段就会在循环结束后执行,否则不执行

for x in range(5):
    if x == 3:
        break
    print(x, '=======')
else:
    print('++++')


# 练习:判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
# 2、3、5、7、11、13  -  素数
# 4、10、6、 8、 12  - 非素数
# 思路:素数 - 除了1和它本身不能被别的数整除, 2 ~ 数-1 如果没有一个能被它整除的数就是素数
print('-------------------------华丽的分割线--------------------------')
num = 13
for x in range(2, num):
    if num % x == 0:
        print(num, '不是素数')
        break
else:
    print(num, '是素数')

# 优化方案:
num = 13
for x in range(2, int(num**0.5) + 1):
    if num % x == 0:
        print(num, '不是素数')
        break
else:
    print(num, '是素数')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值