Day5 循环

Day5 循环

一、while循环

1. while

1)语法:

while 条件语句:
    循环体

2)执行过程:
先判断条件语句是否成立,如果成立就执行循环体,执行完循环再判断条件语句是否成立,成立就再执行循环体…以此类推,直到条件不成立循环就结束。

案例:使用while循环控制程序打印5次’hello world!’

x = 0
while x < 5:
    print('hello world!')
    x += 1

"""
x = 0: x < 5  ->  0 < 5  -> True -> print('hello world!'); x += 1  -> x = 1
x = 1: x < 5 -> 1 < 5 -> True  -> print('hello world!'); x += 1 -> x = 2
x = 2: x < 5 -> 2 < 5  -> True  -> print('hello world!'); x += 1 -> x = 3
x = 3: x < 5 -> 3 < 5 -> True  -> print('hello world!'); x += 1 -> x = 4
x = 4: x < 5 -> 4 < 5 -> True  -> print('hello world!'); x += 1  -> x = 5
x = 5: x <5 -> 5 < 5 -> False (结束)
"""

建议:尽量不使用while循环(遇到循环问题的时候优先考虑for循环)

2. for和while的选择

1)原则:能用for循环的时候尽量用for,for解决不了的问题才考虑使用while循环。
2)for循环能够解决的问题:循环次数确定的时候
3)for循环不能解决的问题:
a.死循环
b.循环次数不确定(程序员在写代码的时候无法得知循环的次数 - 这个循环的次数由使用者行为来决定)

案例:写程序提示用户输入密码,直到密码输入正确为止

pw = ‘123abc’
请输入密码:142356
请输入密码:2723hs
请输入密码:auishf

请输入密码:123abc
(结束)

pw = '123abc'    # 系统密码
value = None     # 输入的密码
while value != pw:
    value = input('请输入密码:')

二、continue和break

1. continue

执行循环体的时候如果遇到了continue,当次循环结束,直接进入到下一次循环。

for x in range(5):
    print('+++++')
    continue
    print('-----')
    print('*****')

练习:打印10以内的所有奇数

#方法1:
for x in range(10):
    if x % 2 == 0:
        continue
    print(x)
'''
x = 0: if 0 % 2 == 0  -> if 0 == 0 -> if True -> continue
x = 1: if 1 % 2 == 0  -> if 1 == 0 -> if False;
    print(1) 
x = 2: if 2 % 2 == 0  -> if 0 == 0  -> if True -> continue
...
'''
#方法2:
for x in range(10):
    if x % 2 != 0:
        print(x)

2. break

执行循环体的时候如果遇到了break,整个循环直接结束(循环体剩下的部分不再执行,也不会进入下一次循环)

for x in range(5):
    print('+++++')
    break
    print('-----')
    print('*****')
for x in range(10):
    if x > 4:
        break
    print(x)

3. break的应用

语法:

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

案例:写程序提示用户输入密码,直到输入的密码和系统保存的密码相同为止。

pw = '123123'
while True:
    value = input('请输入密码:')
    if value == pw:
        break

练习:用程序实现猜数字游戏的功能

"""
系统随机产生一个0~100的随机数: 45

请输入你的猜的数字:50
大了,再小点儿!

请输入你的猜的数字:25
小了,再大点儿!

请输入你的猜的数字:30
小了,再大点儿!

...

请输入你的猜的数字:45
恭喜你,猜对了!
"""
from random import randint
num = randint(0, 100)

while True:
    value = int(input('请输入你的猜的数字(0~100):'))
    if value > num:
        print('大了,再小点儿!')
    elif value < num:
        print('小了,再大点儿!')
    else:
        print('恭喜你,猜对了!')
        break

三、循环的else

1. 完整的循环结构

# 1)完整的for循环
for 变量 in 序列:
    循环体
else:
    代码段
    
    
# 2)完整的while循环
while 条件语句:
    循环体
else:
    代码段

2. 循环else的作用:

1)else的存在不影响原来循环的执行
2)如果前面的循环是正常结束(for把数据取完了导致循环结束;while循环的条件不成立导致循环结束)的,else后面的代码段会在循环结束后执行;
如果前面的循环是因为遇到break而结束的,循环结束后不会执行else后面的代码段。

for x in range(5):
    print(x, 'hello world!')
    if x == 2:
        break
else:
    print(100)

2.判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)

num = 7
for x in range(2, num):
    if num % x == 0:
        print(num, '不是素数')
        break
else:
    print(num, '是素数')

练习:判断字符串是否是纯字母字符串

str1 = 'hsjskHJKs'
for x in str1:
    if not ('a' <= x <= 'z' or 'A' <= x <= 'Z'):
        print(str1, '不是纯字母字符串')
        break
else:
    print(str1, '是纯字母字符串')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值