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:
代码段
- 完整的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, '是素数')