4. Python的流程控制

Hi,大家好。我是茶桁。

在前面几节课的基础之上,我们今天开始尝试在Python中控制流程。这中间,让我们来做一些实际的练习。

Python语句的分类

让我们先了解一下Python语句的分类。

在Python中,可分为单行代码代码块/组, 顾名思义,单行代码就是一行的Python代码,而代码块是以冒号作为开始,用缩进划分相同作用域,这样的结构称之为代码块,是一个整体。

# 单行代码
a = 123

# 代码块
if a == 123:
    print('True')
else:
    print('False')

以上代码中输出结果为:

True

在输入代码块的时候,我们要注意使用缩进。在其他语言中代码块可能是{},但是在Python中严格遵守的缩进规则就是代码块。缩进可以是一个Tab距离或者四个空格,可是注意绝对不能混合使用,必须自使用一种方式缩进。

流程控制的分类

什么是流程?流程就是计算机执行代码时候的顺序。

流程可以被分为以下几类:

  • 顺序结构
  • 分支结构/选择结构
  • 循环结构

顺序结构

顺序结构是系统的默认程序结构,自上而下进行执行。

分支结构

分支结构可以让代码走向不同的方向,不同的分支区间。

分支结构中又包含了单向分支,双分支和多分支以及巢状分支。

单向分支

单向分支就是在条件满足之后,执行后续任务。条件不满足的情况下,则不执行。

比如:

if 条件表达式:
	一条python代码
  
a = True
if a:
    print("True")

执行结果:

True

一个经典案例:

程序员下班前女朋友打电话:下班路上买十个包子回来,如果看到卖西瓜的买一个

baozi = 10
mxg = False
if mxg:
  baozi = 1
  
print("买 %s 个包子" %(baozi))

输出结果:

买 10 个包子

正常情况下,我们是直接买了10个包子回家,那如果我们看到了卖西瓜的呢?那么这段代码中等于是我们重新赋值了mxg, 就变成:

baozi = 10
mxg = False

# 走在路上看到了卖西瓜的,重新赋值
mxg = True

if mxg:
  baozi = 1
  
print("买 %s 个包子" %(baozi))

输出结果:

买 1 个包子
双分支

双分支就是在单向分支的基础之上,又多了一个“否则”的选项,当条件不满足的时候执行其他操作。

if 条件表达式:
	一条python代码
else:
	另外一条python代码
	
person = 'girl'
if person == 'girl':
	  # 真区间
    print("上前搭讪:美女,能加个微信吗?")
else:
		# 假区间
    print("直接走开。")

执行结果:

上前搭讪:美女,能加个微信吗?

以上就是一个双向的流程控制,这里面的含义为:表达式成立则执行真区间,如果不成立则执行假区间。

多分支

多分支就是在双分支的基础之上再增加其他可能出现的判断条件,用于执行更多的其他操作。

if 条件表达式:
    一条python代码
    ...
elif 条件表达式:
    一条python代码
    ...
elif 条件表达式:
    一条python代码
    ...
...
else:
    一条python代码
            ...

这段代码中的elif就是可能出现的不同条件,示例如下:

score = 59
if score >= 90 and score <= 100:
    print("奖励一个手机")
elif score >= 80 and score < 90:
    print("今晚吃一顿好的奖励一下")
elif score >= 70 and score < 80:
    print("鼓励:下次努力加油。")
elif score >= 60 and score < 70:
    print("盯紧复习,争取下次进步。")
else:
    print("奖励一顿‘竹笋炒肉’")

执行结果:

奖励一顿‘竹笋炒肉’

可以看到以上代码中,是从上到下依次进行判断条件,当所有条件都没有满足的时候,最后走到了else区间。

这就是多分支,需要判断多个表达式的结果,会自行其中符合条件的一个。

巢状分支

巢状分支,也就是嵌套分支。也就是if条件语句的嵌套:

if 条件表达式:
    代码语句
    if 条件表达式:
        代码语句
    else:
        代码语句
else:
    代码语句

示例:

age = 25
height = 177
sex = 'male'

if sex == 'male':
    # 可以往后判断
    if age >= 22 and age <= 35:
        # 年龄比较合适
        if height >= 175:
            print("处一下试试...")
    else:
        print("拉到...")
else:
    print('当闺蜜吧。')

输出结果:

处一下试试...

在嵌套分支中我们需要注意,3 ~ 5层嵌套就是极限了,不要再往后嵌套。如果这个层数无法解决你的问题,那么可以重新梳理一下逻辑。基本大部分时候都是逻辑上有问题了。

分支 练习:十二生肖

当用户输入一个四位数的年份,计算当前这个年份对应的生肖:

申猴 酉鸡 戌狗 亥猪 子鼠 丑牛 寅虎 卯兔 辰龙 已蛇 午马 未羊

我们先来做一个用户输入的操作

# 获取用户输入的年份
year = input("请输入四位数的年份: ")
print(year, type(year))

添加一个type()函数是为了验证用户输入之后的数据类型,当我们输入2023之后,可以看到输出结果为:

2023 <class 'str'>

证明虽然我们输入的是数字,但是被转成了字符串,那这个时候,我们就需要处理一下了:

# 获取用户输入的年份
year = int(input("请输入四位数的年份: "))
print(year, type(year))

输出结果:

2023 <class 'int'>

这下就对了。

原本我们是需要讲位数,以及范围都控制在合理的数据内的。因为时间关系,在这整个示例中,我就不再去做更多的验证判断了。

# 获取用户输入的年份
year = int(input("请输入四位数的年份: "))

#print(year%12)
num = year % 12

"""
申猴 酉鸡 戌狗 亥猪 子鼠 丑牛 寅虎 卯兔 辰龙 巳蛇 午马 未羊
"""

if num == 0:
    print(f'{
     year}年是 ==> 申猴')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茶桁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值