使用while循环模拟用户登录
嵌套循环打印输出长方形和三角形
嵌套循环打印输出菱形和空心菱形
break在循环中的使用【程序跳转语句】
continue在循环中的使用
空语句pass
使用while循环模拟用户登录
//
i = 0 //初始化变量
while i<3: //(2)条件判断0,1,2
//(3)语句块
user_name = input('请输入用户名:')
pwd = input('请输入密码:')
if user_name == 'ysj' and pwd =='888':
print('系统正在登录,请稍后。。。')
//已经登陆成功了,需要改变循环变量,目的: 退出循环
i=8 //在第三行判断i<3, 8>3 False退出while循环 (4)改变变量
else:
if i<2:
print('用户名或密码不正确,您还有',2-i,'次机会')
i += 1 //相当于 i = i+1 (4)改变变量
if i == 3: //当用户名或密码输入三次不正确的时候,循环执行结束了,i的最大值为3
print('对不起,三次输入错误!')
我要重点关注(我表达错误的位置)
嵌套循环打印输出长方形和三角形
循环结构也可以互相嵌套,在一个循环结构中嵌套另外一个完整的循环结构就称为嵌套循环
//输出了一个长方形:
****
****
****
//外层循环控制行数,内层循环控制列数
for i in range(1,4):
for j in range(1,5):
print("*",end="")
print(end='\n') //或者直接写成 print()
//输出一个直角三角形:
*
**
***
****
*****
for i in range(1,6): //5行
//*的个数与行相同,第一行是range(1,2),第二行是range(1,3),
for j in range(1,i+1):
print("*",end="")
print() //空的print语句,换行
//我还发现了一种更便捷的写法
for j in range(1, 6):
print("*" * j)
//输出一个倒三角形
*****
****
***
**
*
for i in range(1,6):
for j in range(6-i,0,-1):
print("*",end="")
print()
//另一种写法
//第一行打印5个 range(1,6) 第2行打印4个 range(1,5) 第3行打印3个 range(1,4)
for i in range(1,6):
for j in range(1,7-i):
print("*",end="")
print()
//输出一个等腰三角形
*
***
*****
*******
*********
//解释一下
&&&&*
&&&***
&&*****
&*******
*********
for i in range(1,6):
for j in range(1,6-i):
print(" ",end="")
//1,3,5,7等腰三角形 range(1,2),range(1,4),range(1,6),range(1,8),...range(1,10)
for k in range(1,2*i):
print("*",end="")
print() //当两个并列的for循环执行完毕之后,再换行
我得误区:
我在绘制等腰三角形这里弄错了一个问题,我以为当进入i=1的循环后,首先进入j的循环,直接打印4个空格,然后换行打印第二行的三个空格,我还在考虑,这样的话,后面绘制星号的k循环难不成还会自动的从第一行开始填补。不然为什么要在每次打印后设置成不换行。
当我在程序中debug后,我发现,我搞错了几个概念。首先range(1,6-i)的含义,我要搞清楚的是,它可以重复6-i-1(第一行即4)次,然后我的第一个j循环每次也只是打印出一个空格,所以一次i循环只能打印第一 行的内容。
debug的步骤:
i=1 、 j=1 、 j=2 、 j=3 、 j=4 、k=1 、
i=2 、 j=1 、 j=2 、 j=3 、k=1、k=2 、k=3 。。。。。。
嵌套循环打印输出菱形和空心菱形
不知道为什么单独打印上半部分或者下半部分,都可以打印出来,但放在一起时,打印结果如下:
// 菱形打印
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-i+1):
print(' ',end="")
for k in range(1,2*i):
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,2*bottom_row-2*i+2):
print('*',end="")
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-i+1):
print(' ',end="")
for k in range(1,2*i):
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,2*bottom_row-2*i+2):
if k==1 or k==2*bottom_row-2*i+1:
print('*', end="")
else:
print(' ',end="")
print()
break在循环中的使用(程序跳转语句)
程序跳转语句break用于跳(退)出循环结构,通常和if一起搭配使用
语法结构:
(1)跳转语句break在while循环中的使用
// 跳转语句break在while循环中的使用
s = 0 //存储累加和
i = 1 //(1)初始化变量
while i<11: //(2)条件判断
//(3)语句块
s += i
if s>20:
print("累加和大于20的当前数是:",i)
break
i += 1 //(4)改变变量
统计登录次数
// 跳转语句break在while循环中的使用
i = 0 //(1)初始化变量,统计登录的次数
while i<3: //(2)条件判断
//(3)语句块
user_name = input("请输入用户名:")
pwd = input("请输入密码:")
if user_name == 'ysj' and pwd == '123':
print('正在登陆,请稍后')
break
else:
if i<2:
print("用户名或密码不正确,您还有",2-i,'次机会')
else: //while...else结构里的else
print('三次均输入错误!')
(1)break在for循环中的使用
// An highlighted block
for i in 'hello':
if i == 'e':
break
print(i) //输出的为 h,因为判断为e时,整个循环结束了
//使用for循环去判断用户密码登录
for i in range(3):
user_name = input("请输入用户名:")
pwd = input("请输入密码:")
if user_name == 'ysj' and pwd == '123':
print('正在登陆,请稍后')
break
else:
if i<2:
print("用户名或密码不正确,您还有",2-i,'次机会')
else: //for...else结构里的else
print('三次均输入错误!')
continue在循环中的使用
continue的作用是用于跳过本次循环的后续代码,而继续执行下一次循环操作,continue在循环中通常也是和if一起搭配使用。
语法结构
(1)跳转语句continue在while中的使用
// 跳转语句continue在while中的使用
s = 0
i = 1
while i<=100:
if i%2 == 1: //奇数
i+=1
continue //不再执行后面的代码了
//累加求和的代码
s += i
i += 1
print('1-100之间的偶数和:',s)
(2)跳转语句continue在for循环中的使用
// 跳转语句continue在for中的使用
s = 0
for i in range(1,101):
if i%2 == 1: //奇数
continue //不再执行后面的代码了
//累加求和的代码
s += i
print('1-100之间的偶数和:',s)
空语句pass
pass是Python中的保留字
在语法结构中只起到占位符作用,使语法结构完整,不报错
一般可用在if、for、while、函数的定义、类的定义中
// 空语句pass
if True:
pass
while True:
pass
for i in range(10):
pass