python循环
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 = 5; x < 5 -> 5 < 5 -> False
2.for和while的选择
遇到循环问题优先使用for循环,for循环解决不了的问题才使用while循环。
for循环无法解决的问题:
1)死循环
2)循环次数不确定(循环次数不由程序员决定,而是由使用这个程序的用户行为决定)
# 循环次数不确定的案例:写程序提示用户输入密码,直到输入的密码和系统保存的密码相同为止。
# while 输入的密码不等于系统保存的密码:
# 提示用户输入密码
pw = '12345'
value = input('请输入密码:')
while value != pw:
value = input('请输入密码:')
3.continue和break是循环关键字,只能在循环体中使用
- continue - 结束一次循环
执行循环体的时候如果遇到continue,当次循环结束,直接进入下一次循环。
for i in range(5):
print('======')
continue
print('++++++')
for i in range(1, 11):
if i % 2 == 1:
continue
print(i)
- break - 结束整个循环
执行循环体的时候如果遇到了break,整个循环直接结束(循环体剩下的部分不在执行,也不会进入下一次循环)
for i in range(1, 11):
if i % 5 == 0:
break
print(i)
print('i:', i)
- break的应用 - 当while遇到break
while True:
需要重复执行的操作
if 循环结束的条件:
break
# 案例:写程序提示用户输入密码,直到输入的密码和系统保存的密码相同为止。
pw = '12345'
while True:
value = input('请输入密码:')
if value == pw:
break
# 练习:用程序实现猜数字游戏的功能
'''
系统随机产生一个0-100的随机数
'''
from random import randint
num = randint(0, 100)
count = 5
while True:
value = int(input('请输入你猜的数字(0-100):'))
count -= 1
if value > num:
print('数字大了!')
print('次数还剩{}次'.format(count))
elif value < num:
print('数字小了!')
print('次数还剩{}次'.format(count))
else:
print('恭喜你猜对了!')
break
if count == 4 and value == num:
print('天才,你猜对了')
if count == 0:
print('你猜的次数已用完,游戏结束')
break
print('正确答案是{}'.format(num))
- 输入任意一个正整数,求他是几位数?
解题思路:用一个变量来统计整除次数
123 // 10 -> 12 // 10 -> 1 // 10 -> 0
n = int(input('请输入一个数:'))
count = 0
while True:
count += 1
n //= 10
if n == 0:
break
print('输入的数是{}位数'.format(count))
- 判断指定的数是否是素数
素数:2 3 5 7 13 …
方法1:
num = 13
count = 0 # 统计2 - num-1之间能被整除的数的个数
for i in range(2, num):
if num % i == 0:
count += 1
if count == 0:
print(num, '是素数')
else:
print(num, '不是素数')
方法2:
num = 18
flag = True # 假设num是素数
for i in range(2, num):
if num % i == 0:
flag = False
break
if flag:
print(num, '是素数')
else:
print(num, '不是素数')
4.循环结构
- 完整的循环结构
1)完整的for循环
for 变量 in 序列:
循环体
else:
代码段
2)完整的while循环
while 条件语句:
循环体
else:
代码段
- 循环else的作用:
1)else的存在不影响原来循环的执行
2)如果前面的循环是正常结束(for把数据取完了导致循环结束;while循环的条件不成立导致循环结束)的,else后面的代码段会在循环结束后执行;
如果前面的循环是因为遇到break而结束的,循环结束后不会执行else后面的代码段
for i in range(5):
print('hello world')
if i == 3:
break
else:
print('abc')
# 案例.判断指定的数是否是素数
num = 20
for i in range(2, num):
if num % i == 0:
print(num, '不是素数')
break
else:
print(num, '是素数')
# 练习:判断字符串是否为纯字母字符串
str1 = 'abchags'
for i in str1:
if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
print(str1,'是纯字母字符串')
break
else:
print(str1, '不是纯字母字符串')