circulation
python中循环结构有两种:for循环;while循环
-
for循环
- a语法
for 变量名 in 序列:
循环体 - b说明
for - 关键字,固定
变量名 - 标识符(非关键字)
in - 关键字,固定写法
序列 - python中序列有:字符串、列表、元祖、字典、集合、range、生成器、迭代器等
: - 固定写法
循环体 - 和for保持一个缩进的一条或者多条语句 - c.执行过程
当程序执行到for循环的时候:让变量在序列中取值,一个一个取,取完为止,每取一个值,执行一次循环体
for num in 'abcdef':
print(num,id(num))
print('===')
#num = 'a'
#print(a,id(a))
#print('===')
#num = 'b'
#print(b,id(b)),
#print('===')
2. range函数,配合for循环使用
range(N) - N是正整数,产生0 ~ N-1的所有整数
range(M, N) - M,N都是正整数,并且N>M,产生M~N-1的所有整数,循环N-M次
range(M, N, S) - M,N,S都是正整数;产生M~N(每次加S)
注意:xrange是python2.0中的语法,python3.0无效(pycharm中)
for num1 in range(10):
print(num1)
for num2 in range(100, 1000):
print(num2)
for num3 in range(0, 101, 2):
print(num3)
计算1+2+3+...+100的和
sum = 0
for num4 in range(1,101):
sum = sum + num4 #sum += num4
print(sum)
'''
执行过程
sum = 0
num4 = 1 sum = sum + num4
num4 = 2 sum = sum + num4
...
num4 = 100 sum = sum += num4
print(sun)
计算2 * 4 * 6 * 8 * ... *20
product = 1
for num5 in range(2, 21, 2 ):
product = product * num5
print(product)
计算0~100中所有能够被3或者5整除的数的和
sum = 0
for num6 in range(0, 101):
if num6 % 3 ==0 or num6 % 5 == 0:
#print(num6)
sum += num6
print(sum)
while循环
- a语法
while 条件语句:
循环体 - b说明
while - 关键字,固定写法
条件语句 - 数据、变量、表达式等(不能是赋值运算)
: - 固定写法
循环体 - 和while保持一个缩进的一条或者多条语句(循环过程中多次执行) - c执行过程:先判断条件语句是否为True;
若为True,执行一次循环体;然后继续判断条件语句,以此类推
直到判断条件语句的结果为False,结束整个循环。
两个极端:
当条件语句判断结果一直为True,会造成死循环
当条件语句判断结果一开始就为False,循环一次都不会执行
练习:用while循环控制程序输出十行'==='
count = 0
while count < 10:
print('===')
count += 1
print(count)
'''执行过程
count = 0
count < 10 True print('===') count += 1
count = 1
count < 10 True print('===') count += 1
以此类推
count = 10
count < 10 False print(count)
练习1:使用while循环输出0~10
count = 0
while count < 11:
print(count)
count += 1
练习2:使用while循环输出11~20
count = 11
while count < 21:
print(count)
count += 1
练习3:使用while循环输出2,4,6...40
count = 2
while count < 41:
print(count)
count += 2
练习4:求练习3输出数字的和
sum = 0
count = 2
while count < 41:
sum += count
count += 2
print(sum)
练习5:不断输入,直到输入的值是100为止
num = int(input('请输入数字:'))
while num != 100:
num = int(input('请输入数字:'))
print(num)
cmd中ctr+c - 结束程序
补充:随机数,导入random模块,random模块是python内置的一个专门产生和处理随机数的模块
import random
random_num = random.randint(0,10)
#randint(M,N)
#产生M~N的随机数
print('随机数',random_num)
猜数字游戏,产生一个0-100的随机数,然后不断输入数字,直到输入的数字和产生的随机数相等如果输入的数字和随机数不相等,给出偏大或者偏小的提示,统计猜对数字猜了多少次,根据次数范围给出评价
print('==============游戏开始==============')
import random
random_num = random.randint(0,100)
num1 = 1
num = int(input('请输入数字'))
while num != random_num:
if num > random_num:
print('偏大')
else:
print('偏小')
num = int(input('请输入数字'))
num1 += 1
print('恭喜猜对',num)
print('猜的次数',num1)
if 0 < num1 < 5:
print('真厉害')
elif 5 <= num1 < 10:
print('勉强过关')
else:
print('你可能是个傻子')
for循环和while循环的选择
for循环:遍历(一个一个取)序列元素时;循环次数确定时
while循环:死循环和循环次数不确定时
1.continue
-
用法:continue是关键字,只能出现在循环体中
-
功能:执行循环体时,如果遇到continue,就直接结束当次循环,进入到到下次循环的判断
for x in range(5):
if x % 3 == 0:
continue
print(x)
print('=====')
输出结果:
1
=====
2
=====
4
=====
2.break
-
用法:break是关键字,只能出现在循环体中
-
功能:执行循环体时,如果遇到break,整个循环直接结束。
sum = 0
num = 0
while sum <= 100:
num += 1
sum += num
print(num, sum,sum-num)
方法2(用break)
sum1 = 0
num1 = 1
while True:
sum1 += num1
if sum1 > 100:
break
num1 += 1
print(num1,sum1,sum1-num1)
3.else
-
a.语法:
for 变量 in 序列:
循环体
else:
语句块
while 条件语句:
循环体
else:
语句块
-
b.执行过程:如果循环自然死亡,else对应的语句块会执行;如果循环遇到break而结束,else对应语句块不执行
for x in range(5):
print(x)
break
else:
print('循环结束') #0
num = 2
while num < 5:
print(num)
num += 1
break
else:
print(num)
输出结果:2
num = 2
while num < 5:
print(num)
num += 1
else:
print(num)
输出结果:
2
3
4
5
循环嵌套:在循环体中又有循环结构
-
执行过程:外循环执行一次,内循环执行完
for x in range(5):
for y in range(4):
print(x)
print(y)
输出过程
x = (0,1,2,3,4)
x = 0 y = (0,1,2,3)
y = 0 print(0),print(0)
y = 1 print(0),print(1)
y = 2 print(0),print(2)
y = 3 print(0),print(3)
x = 1 y = (0,1,2,3)
y = 0 print(1),print(0)
y = 1 print(2),print(1)
y = 2 print(3),print(2)
y = 3 print(4),print(3)...
以此类推