Python基础(2)流程控制、分支结构,学习Python之路必备

前言:

本章节讲述了Python代码的流程控制

流程指就是计算机运行代码的顺序

流程控制:对计算机执行代码的顺序进行控制

流程控制分类:一般分为三种,顺序结构、分支结构、循环结构




如果对python不是很熟悉建议先阅读上一篇博客:https://blog.csdn.net/m0_46958731/article/details/109751902

顺序结构


从上至少按顺序运行(Python默认)

x = 123
print(x)

y = 456
print(y)

'''

代码从上之下按顺序运行指的就是顺序结构

'''

分支结构


一般分为四种分支结构:单项分支、双项分支、多项分支、巢状分支


要构建分支可以使用if 语句来创建

单项分支
'''
	if 判断条件:		# 如果条件成立 执行代码块 ,代码块注意缩进!!!!
		代码块
'''

x = 10

if 10 > 5:
	print('123')

if 5 > 10:	# 条件会成立吗
	print('456')
print(x)

单项分支 附加知识点:input(人机交互)%s格式化输出
'''
执行这条语句的时候 程序会暂停在原地等待用户的输入
然后输入的值会交给inp_user这个变量,输入的是字符串类型
'''

inp_user = input('请输入你的用户名:')
if inp_user == 'root':
	print('欢迎%s回家' % inp_user)

'''
%s 代表格式化输出(可以引入任意类型)
引入变量到字符串里面可以先用%s占位 最后再引号外面 % 变量名 引入进来

%d 只能引入数字类型的变量值
'''

双分支结构
inp_user = input('Please Username>>>> ')
inp_password = input('Please Password>>>> ')

if inp_user == 'root' and inp_password == '123':
	print('Login Successful')
else:
	print('User or Password error')
	
'''

首先按顺序从上之下运行,待用户输入完信息后执行到if语句
开始判断 是否条件成立,如果成立的话 执行里面的代码块
如果条件不成立 执行else语句

else:当所有条件不成立的时候执行

'''

多项分支结构

score = input('请输入你的成绩:')
# 由于input输入出来的是字符串,如果要进行数字判断那么需要类型转换

int(score)

'''
转换成数字类型
只有检测出来输入的成绩带有数字的字符才会成功转换,否则会报错
或者可以这样写:socre = int(input('请输入你的成绩:'))
'''
if score >= 90:		# 判断1
	print('优秀')
	
elif score >= 70:	# 判断2
	print('良好')
	
elif score >= 60:	# 判断3
	print('及格')

else:	# 如果所有判断语句都不成立时,执行else语句
	print('不及格')

'''

	多个条件判断
	代码由上至下执行,首先判断if语句是否成立,不成立再往下判断
	
	同层次条件判断只会执行一个,如果一个成立,其它的都不会再进行判断
	
'''

if 判断语句,必须要有的就是if 不能以elif 或者 else 为起始判断


巢状分支


单项分支、双向分支、多项分支、互相嵌套(多层结构)
student_number = input('请输入你的学号:')
student_password = input('请输入你的密码:')

if student_number == '10086' and student_password == '123':
	count = input('1、查询分数 2、退出')
	if count == '1':
		score = input('请输入你的分数')
		if score >= 90:		
			print('优秀')
		
		elif score >= 70:	
			print('良好')
			
		elif score >= 60:	
			print('及格')
		
		else:	
			print('不及格')
	elif count == '2':
		print("已退出...")
else:
	print('账号或者密码错误')

'''

	巢装结构也是,分支嵌套
	
	学到循环以后可以重复输入,这里每次input只能输入一次

'''


循环结构


while 循环语句

循环就是重复做某件事情

while 判断条件:	# 如果判断条件成立就重复执行代码块,直到条件不成立为止
	代码块
while循环的使用方法

实例:

count = 1
while count < 20:	# 判断 count是否小于20
	print(count)	# 如果条件一直成立,那么这个循环永远不会结束
	count += 1		# 每次count自增	循环20次以后 判断就会不成立

'''

while 执行的流程:
首先判断条件是否成立,成立的话执行下面的代码块
执行完代码块以后,再来看条件是否成立 以此类推

'''


执行用户登录的操作,定义了一个永远成立的条件(死循环)

while True:
    inp_username = input('Username>>>>> ')
    inp_password = input('Password>>>>> ')

    if inp_username == 'root' and inp_password == '123':
        print('Login Successful')
        break       # 判断登录成功以后 立刻中断循环
    else:
        print('Username or Password error')
'''

循环结束分为两种:
第一种:正常判断条件不成立结束	
	如 count < 20
		当前count值为19	执行+1操作以后
		如果其下面还有代码也会按顺序执行完毕才会进行下一次判断 不成立 结束循环
		
第二种:break 强制中断循环,break以下的代码不执行

'''

break 强制结束当前包住它的循环(不包括外面嵌套的循环)


continue 用于立即结束本次循环,开始下一次循环,continue以下的代码不会执行

count = 1
while count < 20:
	if count == 3:	# 只要count等于3 那么直接结束本次循环
		continue
	count += 1	# 每次循环自增1
	print(count)

'''

这里有一个很严重的问题,那就是:
	前两次count都会正常增加 打印
	到了count等于3的时候,问题来了
	直接结束本次循环,开始下一次,判断 count是否小于20 成立
	那么继续运行代码块,到了if判断 count等于3成立 接着结束本次循环,
	下面代码不会执行
	以此类推,那么这样的话,条件永远成立,判断永远不会结束(死循环)

'''

count = 1
while count < 20:
	if count == 3:	# 只要count等于3 那么直接结束本次循环
		count += 1
		continue
	count += 1	# 每次循环自增1
	print(count)
'''
可以在if里面+1 避免下次还会continue这个关键字
或者 将count += 1 移动到上面,因为代码是按顺序执行的,那么最终效果就是
count等于3时候,if判断成立,跳过 只有下面的print不会执行,下一次循环从count开始
count等与4 判断不会成立

'''

count = 1
while count < 20:
	count += 1	# 每次循环自增1
	if count == 3:	# 只要count等于3 那么直接结束本次循环
		continue
	
	print(count)
	

while 对应列表

lis = [123,456,789]

# 取列表只能通过索引来取值,那么通过while的话就要通过动态索引来一次性取值
count = 0	# 计数

# 因为要取的是上序列表的值,如果要获取它的元素个数,才能进行索引
while count < len(lis):
	print(lis[count])	# count对应到列表索引
	count++		# count在原来的基础上加 +1

循环里面也可以嵌套循环,可以结合上序if判断 写入循环

While练习 判断用户登录验证
count = 3 # 记录错误次数
while True:
	inp_username = input('请输入用户名:')
	inp_password = input('请输入密码:')
	if inp_username == 'root' and inp_password == '123':
		print('登录成功')
		break		# 登录成功后退出
	else:
		count -= 1	# 每次输入错误在原来基础上减1
		if count == 0:
			print('没有机会再进行登录了!')
			break	# 3次机会用完后退出
			
		print('账号或者密码错误,你还有%s次机会' % count)
	
		

for 循环语句


for 循环的使用方法

for 循环也可以叫 遍历

Python for可以遍历任何序列的项目,如一个列表、字符串、字典、元组

for 循环一般格式:

for i in value:	# i 取遍历值的变量名 value 遍历的内容
	print(i)

range()函数:当前你需要遍历数字 或者次数的时候可以使用此方法

# 第一种使用方法
for i in range(1,5):	# range(起始,结束)	 顾头不顾尾
	print(i,end=' ')	# 取消换行,改成打印后空格
1 2 3 4

# 第二种使用方法
for i in range(5):	# 不写起始 默认从0开始
	print(i,end=' ')
0 1 2 3 4

# 第三种使用方法
for i in range(1,10,2):	# 步长,每循环一次在之前的基础上+2
	print(i,end=' ')
1 3 5 7 9

for i in range(10,-1,-1):	# 从10到负1 每次在原来基础上-1
	print(i,end=' ')		
10 9 8 7 6 5 4 3 2 1 0	# 这里起始为10 结尾为-1 顾头不顾尾 只能到0


for 遍历列表实例:根据列表里面的元素取值

l = ['Jack','Tom','Jams']

# 把l列表整个取过来,每次从里面拿一个元素赋给i这个变量,按顺序取元素
for i in l:	
	if i == 'Tom':	# 如果取到的值对应上这个判断那么执行continue跳过这次循环
		continue
	print(l)
	
'Jack'
'Jams'


lis = [['jack',18],['tom',20],['jams',26]]
# 嵌套了3个列表如果取出呢 可以有两种方式
'第一种:'
for i in lis:	# i拿到嵌套的列表
    for j in i:	# 取到i拿到的列表元素值
        print(j,end=' ')	# end默认为换行,这里将里面的内容替换成了空格
    print()	# 打印完一个i拿到的列表 换行
    
jack 18 
tom 20 
jams 26 

# 第二种:结合上篇的解压赋值,也可以拿到for 实现
for name,age in lis:	# 这样拿虽方便,但是要在确认列表元素个数的前提下
	print(name,age)		# 按顺序取值,第一个元素交给name 第二个交给age
	
jack 18
tom 20
jams 26

for 遍历字典实例:遍历只能取出key

# 取多个字典值最好使用for,因为它更方便使用

dic = {"jack":18,'tom':25,'jams':36}

for k in dic:
	print(k)
	
'jack'	# 可以取到key,那么只需要拿key对应dic就可以拿到对应的value
'tom'
'jams'

dic = {"jack":18,'tom':25,'jams':36}

for k in dic:
	print(k,dic[k])
	
'jack' 18
'tom' 25
'jams' 36

# 还有一种可以直接拿到字典值到操作,不需要先取key

# items()方法可以拿到字典的 key 和 value值,定义两个变量取出来即可
for k,v in dic.items():
	print(k,v)

'jack' 18
'tom' 25
'jams' 36

for 遍历字符串:

test = 'abcdef'
for i in test:	# 因为字符串是一个整体,每次取出一个字符
	print(i,end=' ')
a b c d e f

for循环练习:统计相同字符出现的次数
sr = 'hello tom tom say hello good good'
words = sr.split(' ')	# 将字符通过空格进行分隔后成了一个列表

# 此时 word内容
['hello', 'tom', 'tom', 'say', 'hello', 'good', 'good']

dic = {}	# 定义空字典,用于统计字符次数

for i in words:	# 遍历这个列表,因为字符已经分隔存与这个列表
	if i not in dic:	# 判断字符 是否存在字典内,如果已存在则不执行这个判断
		dic[i] = 1
		# 将字符作为key,执行这个代码块的都是第一次出现的字符,给它赋值1
	else:
		dic[i] += 1
		# 执行这个代码块,说明字符已经存在字典内了,那么只需要给value加1即可
		
print(dic)
{'hello': 2, 'tom': 2, 'say': 1, 'good': 2}

for循环练习:打印9x9乘法表
for i in range(1,10):
	for j in range(1,i + 1):	# 根据 i 的值变化 第一次1*1 第二次2*1 2*2
		print('%s x %s = %s' % (i,j,i * j),end='')
	print()	# 每打印一行乘法表就换行		# 格式化输出 end为空不换行
for循环练习:打印*号塔
count = 1
n = 10
for i in range(1,10):	# 打印 10层
    for j in range(n):	# 打印空格
        print(' ',end='')

    for l in range(count):	# 打印 *号
        print('*',end='')

    count += 2	# 每次多两个*号
    n -= 1	# 每次少一个空格

    print()	# 换行

好记性不如烂笔头,快动手操作一下吧!

下一篇博客 文件处理:https://blog.csdn.net/m0_46958731/article/details/110007598

技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点赞收藏+关注 谢谢支持!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值