python:从入门到放弃 04 流程控制

流程控制理论

流程控制即为控制事物的执行流程,具体体现在我们编写的程序执行的顺序上。

1.顺序结构

之上而下的依次执行

2.分支结构

根据某些条件的判断做出不同的执行流程

3.循环结构

根据某些条件的判断循环反复的做相同的事情

1646656801961.png

1.在python中使用缩进来表示代码的从属关系
	if num == 18:
    	print('Rain')
#缩进相同时即为同一个代码块,在其他语言中也有用{}括起来表示同一个代码块。
2.并不是所有的代码都可以有子代码(从属的代码)
3.如果多行代码属于同一个父代码 那么这多行代码需要保证相同的缩进
#在python中推荐使用四个空格来表示缩进(四个好看一些)
4.具有相同缩进量的代码彼此之间按照顺序结构执行 没有从属关系 平起平坐

流程控制之if判断

1.if

	"""
	语法结构
		if 条件:
		    条件成立之后执行的子代码(可以有多行)
	"""
num = 1
if num == 1:
    print('Rain')
    #打印Rain

2.if...else

	"""
	语法结构
		if 条件:
			条件成立之后执行的子代码(可以有多行)
		else:
			条件不成立执行的子代码(可以有多行)
	"""
num = input('输入1')

if num == '1':
	print('1')
else:
    print('0')
    #当输入1时,打印 1。输入其他的,打印 0

3.if...elif...else

"""
	语法结构
		if 条件1:
			条件1成立执行的子代码(可以有多行)
		elif 条件2:
			条件1不成立条件2成立执行的子代码(可以有多行)
		elif 条件3:
			条件1和2都不成立 条件3成立执行的子代码(可以有多行)
		else:
			上述所有的条件都不成立执行的子代码(可以有多行)
	中间的elif可以有多个
	"""

分支结构练习题

1.编写一个用户登录程序

如果用户名是Rain并且密码是123 则打印登录成功
如果不是则打印用户名或密码错误

1646656313518.png

2.编写一个成绩评判系统
如果成绩大于90 则打印优秀
如果成绩大于80 则打印良好
如果成绩大于70 则打印一般
如果成绩大于60 则打印及格
如果成绩小于60 则打印挂科

1646656371380.png

流程控制之while循环

    """
	语法结构
		while 条件:
			条件成立之后执行的循环体代码
	1.先判断条件是否成立 如果成立则执行循环体代码
	2.循环体代码执行完毕后 再次判断条件是否成立 如果成立则继续执行循环体代码 如果不成立则跳出循环
	"""	

但问题来了,我们可以开启循环,但当程序进入死循环后,会不断的循环,不会停下来,所以我们用while语句配合其他关键字可以达成一些想要的效果。

# 实现ATM的输入密码重新输入的功能
while True:
    user_db = 'nick'
    pwd_db = '123'

    inp_user = input('username: ')
    inp_pwd = input('password: ')
    if inp_user == user_db and pwd_db == inp_pwd:
        print('login successful')
    else:
        print('username or password error')
#虽然代码功能实现了,但是循环没有停下

1.while + break

break的意思是终止掉当前层的循环,执行其他代码。

while True:
    print('1')
    print('2')
    break
    print('3')
    #只会打印1 2

2.while + continue

continue的意思是终止本次循环,直接进入下一次循环

n = 1
while n < 10:
    if n == 8:
        # n += 1  # 如果注释这一行,则会进入死循环
        continue
    print(n)
    n += 1
	#不会打印8

3.while + else

当while没有被关键字break主动结束的情况下 ,正常结束循环体代码之后会执行else的子代码

n = 1
while n < 3:
    print(n)
    n += 1
else:
    print('else子代码')
    #1
    #2
    #else子代码

4.while嵌套

有时候我们需要将while语句嵌套在一起,我们知道,break语句只能退出当前层。所以每多嵌套一次while语句我们就要多写一个break语句,但我们可以通过布尔值来解决这个问题。

flag = True
    while flag:
        username = input('username>>>:')
        password = input('password>>>:')
        if username == 'jason' and password == '123':
            print('登录成功')
            while flag:
                cmd = input('请输入您的指令>>>:')
                if cmd == 'q':
                    print('下次光临')
                    flag = False
                print('正在执行您的指令:%s' % cmd)
        else:
            print("用户名或密码错误")
#即将每一层while循环的条件都使用同一个bool值为True的变量名,当程序修改其为False时,会退出所有的while循环。

流程控制之for循环

一般情况下涉及到循环取值的时候 都会考虑使用for循环而不是while循环

"""
语法结构
	for 变量名 in for循环对象:  # 字符串、列表、字典、元组、集合
		for循环的循环体代码
	每次执行都会将循环对象中的一个元素赋值给变量名

ps:针对for循环语法结构中的变量名 也应该做到见名知意
	如果真的没有合适的名字可以使用常用的变量名i、j、k、v、num、item...
"""
name_list = ['jason', 'kevin', 'tony', 'tank', 'oscar']
# 使用while循环依次打印出列表中所有的元素
count = 0
while count < 5:
	print(name_list[count])
	count += 1
# 使用for循环依次打印出列表中所有的元素
 for name in name_list:
	print(name)
jason
kevin
tony
tank
oscar

for循环的循环次数受限于容器类型的长度,而while循环的循环次数需要自己控制。for循环也可以按照索引取值。

print(list(range(1, 10)))
for i in range(1, 10):  # range顾头不顾尾
    print(i)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
1
2
3
4
5
6
7
8
9

其中比较特殊的是字典,循环字典只能获取到字典的key,value无法直接获取,后续可通过字典的内置方法来用for循环取值

 userinfo_dict = {'username': "jason", 'age': 18, 'gender': 'male'}
 for i in userinfo_dict:
     print(i)
username
age
gender

range关键字

range方法在python2和python3中有所区分

  • 在python2中range是直接产生一个列表 元素很多的情况下比较占用空间,在python2中有一个xrange ,其实就是python3里面的range
  • 在python3中range相当于哆啦A梦的口袋 不占空间但是可以取出很多数据,在python3中就只有一个range了。
for i in range(101):
	print(i)#打印1~100 顾头不顾尾
# 用法1  括号内只写一个数字  默认从0开始  顾头不顾尾
# for i in range(10):
#     print(i)
# 用法2  括号内写两个数字  自定义起始位置 顾头不顾尾
# for i in range(1, 10):
#     print(i)
# 用法3  括号内写三个数字  第三个数字表示的是等差数列的差值  默认情况下是1
# for i in range(1, 10, 2):
#     print(i)

for循环补充

while循环可以通过与其他方法一起使用来达成一些效果,同样的,for循环也可以。

# for+break
	break结束本层for循环
# for+continue
	continue结束本次for循环 直接开始下一次
# for+else
	for循环正常结束之后运行else子代码
"""与while一致"""

小作业

1.编写一个猜年龄的游戏
	基本要求
    	如果不对的情况下可以猜三次 如果对了直接结束
    拔高练习
    	三次机会用完之后提示用户是否继续猜测 如果用户输入了y
        则再给用户三次机会 如果用户输入n则直接结束
number = 3
count = 1
my_age = 20

while count < 4:
    Guess_age = input('猜猜我的年龄>>>')
    Guess_age = int(Guess_age)
    if Guess_age == my_age:
        print('猜对了!!!ヾ(✿゚▽゚)ノ')
        break
    else:
        number -= 1
        print('猜错了!ε=(´ο`*)))唉 还剩%s次机会' % number)
        count += 1
        if count == 4:
            is_continue = input('请输入是否继续(y/n)>>>')
            if is_continue == 'Y' or is_continue == 'y':
                count = 1
                number = 3
            else:
                print('游戏结束')

1646656580428.png

posted @ 2022-03-07 20:50  Rain_Kz  阅读(36)  评论(0编辑  收藏  举报