循环
Python中的循环结构有两种:for 和 while
for循环
1.语法
for 变量名 in 序列:
循环体
2.说明
for -关键字,固定写法
变量名 -和声明变量时的变量名要求一样
in -关键字,固定写法
序列 -Python中的序列有字符串,列表,元祖,字典,集合,range,生成器和迭代器等
注意:序列不能是数字类型
: -固定写法
循环体 -和for保持一个缩进的一条或多条语句
3.执行过程
当程序执行到for循环时:让变量去序列中取值,一个一个的取,取完为止。每取一个值,执行一次循环体。
for i in '321':
print('===')
for i in 'abc':
print(i)
a = '123'
b = 'abc'
for i in a:
print(i)
for i in b:
print(i)
"""
for i in 321: -----------错误,运行会报错,因为序列不能为数字
print('===')
a = 123
for i in a: -----------错误,虽然变量可以当序列,但变量值为数字,运行会报错
print(i)
"""
range函数
range(N) -N是正整数,产生0—N-1的所有整数
range(M,N) -M,N都是整数,且N>M,产生M—N-1的所有整数
range(M,N,S) -M,N,S都是整数,且N>M,产生M—N-1之间,每次加S后所得到的所有的数
注意:xrange是Python2.x版本的语法,在Python3.x版本无效
for num in range(10):
print(num)
for num in range(100,1000):
print(num)
for num in range(0,101,2):
print(num)
#练习:计算1+2+3+...+100的和
sum1 = 0
for num in range(1,101):
sum1 += num
print(sum1)
while循环
1.语法
while 条件语句:
循环体
2.说明
while -关键字,固定写法
条件语句 -可以是数据,变量,运算表达式等,但不能是赋值运算(和if的条件语句要求相同)
: -固定写法
循环体 -和while保持一个缩进的一条或多条语句(会被重复执行)
3.执行过程
先判断条件语句是否为True,为True则执行一次循环体。执行完循环体后,再判断条件语句是否为True,为True则再执行一次循环体。执行完循环体后,再,判断条件语句是否为True,为True则再执行一次循环体,以此类推,直到判断条件语句的结果为False,整个循环结束。
两个极端:
- 当条件语句永远为True,会造成死循环的现象
- 一开始条件语句结果就为False,那么循环一次都不会执行
#练习:用while循环控制程序打印10行====
count = 1
while count <= 10:
print('===')
count += 1
for循环和while循环的选择
- 遍历(一个一个的取)序列元素,用for循环
- 循环次数确定的时候用for循环
- 死循环和循环次数不确定的时候用while循环(当然上面for循环也都可以用while循环来实现)
随机数
需要导入random模块,random是Python内置的一个专门用来产生和处理随机数的模块
语法
randint(M,N) #产生M~N的随机整数,要求M,N都为整数,且N>M
import random
random_num = random.randint(0,10)
print('随机数是:',random_num)
练习
#猜数字
import random
random_num = random.randint(0,100)
count = 1
input_num = int(input('输入一个数字:'))
while random_num != input_num:
if random_num > input_num:
print('小了')
else:
print('大了')
input_num = int(input('重新输入一个数字:'))
count += 1
print('正确',random_num)
print('猜对数字所花次数为:',count)
if count == 1:
print('Very Lucky')
elif 1 < count <= 5:
print('Lucky!')
elif 5 < count <= 10:
print('Just so-so')
else:
print('Bad Luck')
continue关键字
用法:continue是关键字,只能出现在循环体中
功能:执行循环体的时候,如果遇到continue,就直接结束当次循环,立即进入下次循环的判断。
for i in range(10):
if i % 3 == 0:
continue
print(i)
break关键字
用法:continue是关键字,只能出现在循环体中
功能:执行循环体的时候,如果遇到break,整个循环直接结束
sum1 = 0
n =1
while True:
sum1 += n
if sum1 > 1000000:
break
n += 1
print(n,sum1,sum1-n)
sum1 = 0
count = 0
while sum1 <= 1000000:
count += 1
sum1 += count
print(count)
else关键字
语法:
for 变量 in 序列:
循环体
else:
语句块
while 条件语句:
循环体
else:
语句块
执行过程:如果循环自然死亡,else对应的语句块会执行;如果循环因遇到break而结束,else对应的语句块不会执行。
for x in range(5):
print(x)
else:
print('结束')
for x in range(5):
print(x)
break
else:
print('结束')
循环嵌套
在循环体中又有循环结构
执行过程:外循环执行一次,内循环要执行完
for i in range(5):
for j in range(4):
print(i,j)
注意:循环嵌套中遇到continue或break时,只对最近的循环生效(所属的循环)