循环结构
1.1遍历循环结构for
1.1.1遍历循环for
(1)遍历循环for的语句结构:
for 循环遍历 in 遍历对象:
语句块
程序执行:
(2)示例:
#遍历字符串
for i in 'hello':
print(i)
#range()函数,python中的内置函数,产生一个(n,m)的整数序列,包含n,但不包含m
for i in range(1,11):
#print(i)
if i%2==0:
print(i,'是偶数')
#计算1-10之间的累加和
sum=0#用于存储累加和
for i in range(1,11):
sum+=i#s=s+i
print(sum)
print('====100到999之间的水仙花数====')
'''
水仙花数:
个位数的三次方+十位数的三次方+百位数的三次方等于这个数
153=3*3*3+5*5*5+1*1*1
'''
for i in range(100,1000):
a=i//100#百位上的数字
b=i//10%10#十位上的数字
c=i%10#个位上的数字
if i==a**3+b**3+c**3: #a*a*a+b*b*b+c*c*c=a**3+b**3+c**3(幂运算)
print(i)
输出结果:
1.1.2for...else...结构
(1)for...else...结构的语句结构:
for 循环变量 in 遍历对象:
语句块1
else:
语句块2
else只有在循环正常结束之后才会执行;
什么是不正常的--->循环当中遇到了break,就会终止循环
(2)示例:
s=0#用于存储累加和
for i in range(1,11):
s+=i
else:
print('累加和为:',s)#循环正常执行完毕,执行else
输出结果:
1.2无限循环结构while
(1)语句结构:
while 表达式:
语句块
- 程序执行
1.2.1while循环的四个步骤
- 初始化变量
- 条件判断
- 语句块
- 改变变量
示例:
#(1)初始化变量
answer=input('今天是否上课?-->y/n')
while answer=='y':#(2)条件判断
print('好好上课哦')#(3)语句块
#(4)改变变量
answer=input('今天是否上课?-->y/n')
#1-100之间的累加和
sum=0 #存储累加和
i=1 #(1)初始化变量
while i<=100: #(2)条件判断
sum += i #(3)语句块
i += 1 #(4)改变变量
print('1-100的累加和为:',sum)
结果:
1.2.2while...else...结构
(1)语句结构
while 表达式:
语句块1
else:
语句块2
(2)示例:
#(1)初始化变量
i=0
while i<3:#(2)条件判断
# (3)语句块
user_name=input('请输入用户名:')
pwd=input('请输入密码:')
#登录操作
if user_name=='小梁' and pwd=='123q':
print('登陆成功')
#需要改变变量,目的:退出循环
i=5#第三行判断i<3,5<3 false 退出while循环 #(4)改变变量,用户名和密码正确的时候
else:
if i<2:
print('用户名或者密码不正确,您还有',2-i,'次机会')
i+=1#(4)改变变量 #用户户名和密码正确的时候
#单分支的判断
if i==3:#当用户名或密码三次不正确的时候,循环结束,i最大为3
print('对不起三次均输错')
输出结果:
1.3嵌套
(1)概念:循环结构也可以相互嵌套,在一个循环结构中嵌套另一个完整的循环结构就称为嵌套循环。
注意:建议大家嵌套不要超过三层,因为在嵌套过程中,内层循环实际上是在给外层循环做语句块部分。
示例:
#长方形的输出(三行四列)
for i in range(1,4): #外层循环控制行数,共三行
for j in range(1,5): #内层循环控制列数,四列
print('*',end='')
print()#空的print语句,作用是换行
print('----------直角三角形-------------')
for i in range(1,6):#行数
#*的个数与行数相同,第一行range(1,2),第二行range(1,3)
for j in range(1,i+1):#列数
print('*',end='')
print()
print('-------------倒三角形-------------')
#第一行五颗星range(1,6),第二行4颗range(1,5)...第五行一颗range(1,2)
for i in range(1,6): #5行
for j in range(1,7-i): #5列
print('*',end='')
print()#内层循环执行完毕之后,空print()换行
print('-----------等腰三角形-----------')
'''
&&&&*
&&&***
&&*****
&*******
*********
'''
for i in range(1,6): #外层循环5行
#打印倒三角形
for j in range(1,6-i):
print(' ',end='')
#打印等腰三角形 第一行range(1,2) 第二行range(1,4) 第三行range(1,6)
for m in range(1,i*2):
print('*',end='')
print()#当两个并列的for循环执行完毕之后,再换行
print('-----------菱形------------')
#菱形的话 奇数行可以打印出来,偶数行不行
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 m in range(1,i*2):
print('*',end='')
print()
'''
&&&&*
&&&***
&&*****
&*******
*********
&*******
&&*****
&&&***
&&&&*
'''
#下半部分
bottom_row=row//2
for i in range(1,bottom_row+1): #不含bottom_row+1
#直角三角形
for j in range(1,i+1):
print(' ',end='')
#倒三角
for m in range(1,2*bottom_row-2*(i-1)): #下半部分一共四行时第一行 range(1,8) 第二行 range(1,6) 第三行range(1,4)
print('*',end='')
print()
print('-----------空心菱形--------------')
#菱形的话 奇数行可以打印出来,偶数行不行
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 m in range(1,i*2):
if m==1 or m==i*2-1:
print('*',end='')
else:
print(' ',end='')
print()
'''
&&&&*
&&&***
&&*****
&*******
*********
&*******
&&*****
&&&***
&&&&*
'''
#下半部分
bottom_row=row//2
for i in range(1,bottom_row+1): #不含bottom_row+1
#直角三角形
for j in range(1,i+1):
print(' ',end='')
#倒三角
for m in range(1,2*bottom_row-2*(i-1)): #下半部分一共四行时第一行 range(1,8) 第二行 range(1,6) 第三行range(1,4)
if m==1 or m==2*bottom_row-2*(i-1)-1:
print('*',end='')
else:
print(' ',end='')
print()
输出结果: