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, '是纯字母字符串')