Python—循环结构
一、遍历循环结构for
1. for的语句结构:
for 循环变量 in 遍历对象:
语句块
示例1
for i in 'hello':
print(i)
#rang(),Python中的内置函数,产生一个(n,m)的整数序列,包含n但不包含m
print('-'*10)
for i in range(1,6):
if i%2==0:
print(i,'是偶数')
#计算1-5之间的累加和
print('-'*10)
s=0
for i in range(1,6):
s+=i
print(s)
结果:
示例2(100-999之间的水仙花数)
'''
水仙花数
153=1*1*1+5*5*5+3*3
'''
for i in range(100,1000):
a=i%10 #获取个位上的数字
b=i//10%10 #获取十位上的数字
c=i//100#获取百位上的数字
if a**3+b**3+c**3==i:
print(i)
结果:
2. for…else…结构
for 循环变量 in 遍历对象:
语句块1
else:
语句块2
循环正常执行完毕,执行else部分,若遇到非正常情况,如语句块1中含有break,则直接跳出循环,且不执行else部分。
示例:
s=0
for i in range(1,11):
s+=i
else:
print('1-10之间的累加和为:',s)
结果:
二、无限循环结构while
1. while的语句结构
while 表达式:
语句块
2. while循环的四个步骤
①初始化变量
②条件判断
③语句块
④改变变量
示例1—模拟用户登陆
i=0
while i<3:
id=input('请输入账号:')
pwd=input('请输入密码:')
if id=='123' and pwd=='123':
print('登陆成功!')
i=5 #跳出循环
else:
if i<2:
print('账号或密码错误,您还有',2-i,'次机会')
i+=1
if i==3:
print('请五分钟后再试')
结果:
示例2—1-100的累加和
s=0
i=1
while i<=100:
s+=i
i+=1
print(s)
结果:
3. while…else…结构
while 表达式:
语句块1
else:
语句块2
示例:
s=0
i=1
while i<=100:
s+=i
i+=1
else:
print(s)
结果:
三、循环嵌套打印输出长方形和三角形
示例1—长方形
for i in range(1,4): #外层循环控制行数
for j in range(1,5): #内层循环控制列数
print('*',end='')
print() #换行
结果:
示例2—直角三角形
for i in range(1,6):
#*的个数与行相同,第一行,range(1,2),第二行,range(1,3)
for j in range(1,i+1):
print('*',end='')
print() # 换行
结果:
示例3—倒三角
for i in range(1,6):
#*的个数与行的关系,第一行,range(1,6),第二行,range(1,5)
for j in range(1,7-i):
print('*',end='')
print() # 换行
结果:
示例3—等腰三角形
'''
&&&&*
&&&***
&&*****
&*******
*********
'''
for i in range(1,6):
#&(这里代表空格)的个数与行的关系,第一行,range(1,6),第二行,range(1,5)
for j in range(1,6-i):
print(' ',end='')
# *的个数与行的关系,第一行,range(1,2),第二行,range(1,4),第三行,range(1,6)
for k in range(1,i*2):
print('*', end='')
print() # 换行
结果:
四、循环嵌套打印输出菱形和空心菱形
示例1—菱形
row=eval(input('请输入菱形的行数:'))
while row%2==0: #判断行数的奇偶性,行数是偶数,重新输入
print('重新请输入菱形的行数:')
row = eval(input('请输入菱形的行数:'))
#输出菱形
top_row=(row+1)//2
for i in range(1,top_row+1):
for j in range(1,top_row+1-i):
print(' ',end='')
for k in range(1,i*2):
print('*', end='')
print() # 换行
#下半部分
bottom_row=row//2
for i in range(1,bottom_row+1):
for j in range(1,i+1):
print(' ', end='')
for k in range(1, bottom_row*2-2*i+2):
print('*', end='')
print() # 换行
结果:
示例2—空心菱形
row=eval(input('请输入菱形的行数:'))
while row%2==0: #判断行数的奇偶性,行数是偶数,重新输入
print('重新请输入菱形的行数:')
row = eval(input('请输入菱形的行数:'))
#输出菱形
top_row=(row+1)//2
for i in range(1,top_row+1):
for j in range(1,top_row+1-i):
print(' ',end='')
for k in range(1,i*2):
if k==1 or k==i*2-1:
print('*', end='')
else:
print(' ', end='')
print() # 换行
#下半部分
bottom_row=row//2
for i in range(1,bottom_row+1):
for j in range(1,i+1):
print(' ', end='')
for k in range(1, bottom_row*2-2*i+2):
if k == 1 or k == bottom_row*2-2*i+2-1:
print('*', end='')
else:
print(' ', end='')
print() # 换行
结果:
作者:小白studying