我的Python学习笔记【4-用例】

使用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
  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值