python中的循坏结构有两种:for循环,while循坏
1.for循坏的语法
a.语法
for 变量名 in 序列:
循环体
b.说明
for - 关键字,固定
变量名 - 和声明变量的时候要求一样
in - 关键字,固定写法
序列 - python中的序列有:字符串,列表,元祖,字典,集合,range,生成和迭代器等
: - 固定写法
循环体 - 和for保持一个缩进的一条或者多条语句
c.执行过程
当程序执行到for循坏的时候:让变量去序列中取值,一个一个的取值,取完为止。每取一次都要执行一个循坏体。
'''
for a in 'abcdefa':
print(a,id(a)) #打印的是变量a在序列中取得值,取多少次值打印多少次
print('=====')
2.range函数
range(N) - N是正整数,产生0N1的所有正整数
range(M,N)- M,N都是整数,并且N>M,产生M~N-1的所有整数
注意:xrange是python2.x的语法,在python3.x无效
for num in range(10):
print(num)
for num in range(100,1000):
print(num)
range(M,N,S)- M,N,S都是整数,产生M~N-1,每次加S来产生下一个数
for num in range(0,100,2):
print(num)
练习:计算机1+2+。。+100的和
sum1 = 0 #保存和的变量
for num in range(1,5):
sum1 += num
print(sum1)
练习:计算246。。。20结果
product = 1
for num in range(2,21,2):
product *= num
print(product)
练习:计算0~100中所有能够被3或者五整除的数的和
sum2 = 0
for num in range(0,101):
if num % 3 == 0 or num % 5 == 0: #取出能被三和五整除的数
sum2 += num
print(sum2)
1.while循坏
a.语法
while 条件语句;
循环体
b.说明:
while - 关键字,固定写法
条件语句 - 可以是数据,变量,运算表达式等。不能是赋值运算
: - 固定写法
循环体 - 和while保持一个缩进的一条或者多条语句(会被重复执行)
c.执行过程;先判断条件语句是否为True,为True就执行一次循环体,
执行完循环体在判断条件语句是否为True,为True再执行一次,
依次类推,直到判断条件语句为False,整个循坏直接结束
两个极端;1.当条件语句永远为True,会造成死循坏的现象
2.一开始条件语句的结果就是False,那么循环体一次都不会执行
练习:用while循坏控制程序打印10行“========”
count = 0
while count < 4:
print('======')
count += 1
练习1:使用while循环打印0-10
count1 = 0
while count1 < 11:
print(count1)
count1 += 1
练习2:使用while循环打印11-20
count2 = 11
while count2 < 21:
print(count2)
count2 += 1
练习3:使用while循环打印2,4,6,8,,40
count3 = 2
while count3 < 41:
print(count3)
count3 += 2
练习4:求2+4+6+。。+40
count4 = 2
sum1 = 0
while count4 < 41:
sum1 += count4
count4 += 2
print(sum1)
练习:不断输入,直到输入的值是100为止
请输入数字:10
请输入数字:1
请输入数字:100
结束!
num1 = 2
while num1 != 100:
num1 = int(input('请输入一个数字'))
print('结束!')
2.补充:随机数
导入random模块,random是python内置的一个专门用来产生和处理随机数的模块
randint(M,N) - 产生M~N的随机数,要求M,N都是整数,并且N>M
import random
random_num = random.randint(0,10)
print('随机数:',random_num)
练习:猜数字游戏
产生一个0~100的随机数,然后不断输入数字,直到输入的数字和产生的随机数相等为止,如果猜的数字和随机数不相等,给出偏大或偏小的提示
增加功能:统计玩家猜对数字猜了多少次,然后根据次数范围给相应的评价
import random
random_num1 = random.randint(0,100)
num2 = 101 #101不可能取到,所以进入while循环
sum3 = 0
while num2 != random_num1:
num2 = int(input('请输入一个数'))
if num2 > random_num1:
print('偏大了')
elif num2 < random_num1:
print('偏小了')
sum3 += 1
print('猜对了')
print('猜的次数:',sum3)
if sum3 < 10:
print('神童')
else:
print('智商有待提高')
3.for循环和while循环的选择
a.遍历(一个一个的取)序列元素用for循环
b.循环次数确定的时候用for循环
c.死循环和循环次数不确定的时候用while循环
1.continue
用法:continue是关键字,只能出现在循环体里面
功能:执行循环体的时候,如果遇到continue,就直接结束当次循环,直接进入下次循环的判断
for x in range(10):
print(x)
continue #不执行下面的语句,直接进入下一个循环
print('++++++')
2.break
用法:breaak是关键字,只能出现在循环体
功能:执行循环体的时候,如果遇到break,整个循环直接结束
for x in range(10):
print(x)
break
print('!!!!')
print('结束')
练习:从0+1+2+3+。。。n,求到什么时候和超过1000000,求出这个数
sum1 = 0
n = 1
while sum1 <= 1000000:
sum1 += n
n += 1
print(sum1)
3.else
a.语法:
for 变量 in 序列;
循环体
else:
语句块
while 条件语句;
循环体
else;
语句块
b.执行过程:如果循环自然死亡,else对应的语句块会执行;如果循环因为遇到break而结束,else对应的语句块不执行
for x in range(5):
print(x)
break
else:
print('循环结束,没有遇到break')
循环嵌套:再循环体中又有循环结构
执行过程:外循环执行一次,内循环执行完
for x in range(5):
for y in range(4):
print(x)
print(y)