走出Python新手村第一步:条件语句【玩转Python】

举报
叶一一 发表于 2023/12/26 09:37:07 2023/12/26
【摘要】 前言主线任务之数据类型基本接近尾声,接下来距离出新手村已经指日可待。新的主线任务已开启,第一关首先来了解一下Python中的条件语句。让我们一起开启新的Python主线任务吧。文章速度阅读完本篇文章,开发者将有以下收获:如何编写简单的 if 语句、if-else 语句和 if-elif-else 结构语句;使用条件语句进行特定条件的测试,确定这些条件是否满足。if 语句介绍我画了一个流程图,...

前言

主线任务之数据类型基本接近尾声,接下来距离出新手村已经指日可待。

新的主线任务已开启,第一关首先来了解一下Python中的条件语句。

让我们一起开启新的Python主线任务吧。

文章速度

阅读完本篇文章,开发者将有以下收获:

  • 如何编写简单的 if 语句、if-else 语句和 if-elif-else 结构语句;
  • 使用条件语句进行特定条件的测试,确定这些条件是否满足。

if 语句

介绍

我画了一个流程图,可以十分快速了解 if 语句的基本结构。

笔记

if-elif-else 结构

需要检查超过两个的情形,使用 if-elif-else 结构。

比如不同等级值下不同称为的展示:

def getName(level):
    if level < 3:
        return '摸鱼萌新'
    elif level < 7:
        return "摸鱼达人"
    elif level >= 7:
        return "摸鱼王者"
    else:
        return "欢迎加入摸鱼团"
print(getName(8))
>>> 摸鱼王者

print(getName(3))
>>> 摸鱼达人

print(getName(0))
>>> 摸鱼萌新

省略 else 代码块

在条件测试中,一旦不满足任何的 if 或 elif 中的条件,else 中的代码就会执行,这可能引入无效甚至恶意的数据。

所以,如果知道最终要测试的条件,应考虑使用一个 elif 代码块来代替 else 代码块,这样一来,只有满足对应的条件,才会执行条件中代码。像上面代码中的情况,当等级达到7及以上,就会返回"摸鱼王者"的称号,所以结尾 一个 elif 条件测试即可,后面的 else 可以省略。

获取符合条件的列表元素的索引

合使用 if 语句和列表,可以实现很多业务场景。比如获得需要的元素、校验列表是否为空、多个列表结合获取需要的元素等。

如果我即想获得需要的元素又想获取改元素的索引值备用,该怎么做呢?

定义一个变量 index 接收最终的索引值,在用 for 语句循环列表时,index 的值增加1。

当满足 if 语句中的条件时,执行代码块,此时符合条件的列表项的索引值就是 index 的值。

name_list = [['fayi'], ['yeyiyi', 'shangyingyan', 'lily', 'ann'], ['Troy'], ['nixiaozi'], ['ningjie', 'ningzaichun', 'chaipaopao']]
index = 0
for name_item in name_list:
    if len(name_item) == 4:
        print(f'列表的第{index+1}项为掘金读书圈四朵金花:{name_item[0]}, {name_item[1]}, {name_item[2]}, {name_item[3]}')
    if len(name_item) == 3:
        print(f'列表的第{index+1}项为掘金读书圈三大才子:{name_item[0]}, {name_item[1]}, {name_item[2]}')
    index += 1
    
>>> 列表的第2项为掘金读书圈四朵金花:yeyiyi, shangyingyan, lily, ann
>>> 列表的第5项为掘金读书圈三大才子:ningjie, ningzaichun, chaipaopao

条件测试

介绍

每条 if 语句的核心都是一个值为 True 或 False 的表达式,这种表达式称为条件测试

笔记

相等与不等

1、检查是否相等,使用相等运算符:==

str_2 = 'yeyiyi'
str_3 = 'shangyingyan'
print(str_2 == str_3)
>>> False

num_1 = 1
num_2 = 1.0
print(num_1 == num_2)
>>> True

上面代码中一共两组校验,第一组是两个字符串,得到的结果是False(不相等);第二组中两个数值,尽管类型不一样,但是值是一样的,所以结果是True(相等)。

2、检测是否不相等,使用不等运算符:!=

还是用上面的两个例子,将运算符换一下,结果和原来也是相反的。

str_2 = 'yeyiyi'
str_3 = 'shangyingyan'
print(str_2 != str_3)
>>> True

num_1 = 1
num_2 = 1.0
print(num_1 != num_2)
>>> False

数值比较

数值的检查,除了是否相等和是否不相等,还有多个数值间的大小比较。

temperature_1 = 39
if temperature_1 > 37:
    print('高温预警,请减少室外活动')

当温度高于37的时候,会给出预警提示,数值39高于37,所以提示信息会被打印出来。

>>> 高温预警,请减少室外活动

类型检查

实际开发中,还会有一种情况,当使用公共方法的时候,可能需要对入参的类型进行校验,符合需要的类型的值,才会进行下一步操作。

Python 有两个方法可以判断需要检查的变量是否属于某个类型:typeisinstance

这两个方法的区别主要有两点:

1、是否可以判断未知类型

  • type 方法,只有一个参数,可以得到校验的变量的类型,还可以得到参数变量未知的所属类型;
  • isinstance 方法,有两个参数,只能判断是否属于某个已知类型,不能直接得到变量未知的所属类型。
num_1 = 1
num_3 = 1.0
print(isinstance(num_1, int))
>>> True
print(isinstance(num_3, int))
>>> False
print(type(num_1))
>>> <class 'int'>
print(type(num_3) == float)
>>> True

class Ship:
    def update(self):
        self.name = '嫦娥'

ship = Ship()
print(type(ship) == Ship)
>>> True
print(type(ship))
>>> <class '__main__.Ship'>

2、子类实例是否属于父类

  • type 会判断子类实例对象不属于父类类型;
  • isinstance 可以判断子类实例对象属于父类类型。
class Settings:
    def __init__(self):
        self.speed = 1.0
class Ship(Settings):
    def update(self):
        self.name = '嫦娥'

ship = Ship()
print(isinstance(ship, Ship))
>>> True
print(isinstance(ship, Settings))
>>> True
print(type(ship) == Ship)
>>> True
print(type(ship) == Settings)
>>> False
print(type(ship))
>>> <class '__main__.Ship'>

通过不同点,也对使用场景有了大致的了解:

  • 含不确定类型的检查,可以用 type;
  • 有继承关系的父类类型判断,可以用 isinstance

检查多个条件

1、使用 and 检查多个条件

如果每个测试都通过了,整个表达式就为 True;如果至少一个测试没有通过,整个表达式就为 False。

def checkAdmin(name, grade):
    if name == 'ningjie' and grade == 7:
        print(f'您好,尊敬的超级管理员 {name}')
    else:
        print(f'您好, {name}')
checkAdmin(name = 'yeyiyi', grade = 7)
>>> 您好, yeyiyi
checkAdmin(name = 'ningjie', grade = 7)
>>> 您好,尊敬的超级管理员 ningjie

2、使用 or 检查多个条件

只要至少一个条件满足,整个表达式就为 True;如果都没有通过,则整个表达式就为 False。

def checkAdmin(name):
    if name == 'ningjie' or name == 'Troy':
        print(f'您好,尊敬的超级管理员 {name}')
    else:
        print(f'您好, {name}')
checkAdmin(name = 'Troy')
>>> 您好,尊敬的超级管理员 Troy

checkAdmin(name = 'ningjie')
>>> 您好,尊敬的超级管理员 ningjie

列表中的特定值检查

  • 使用关键字 in,判断特定的值是否已包含在列表中;
  • 使用关键字 not in,判断特定的值是否不包含在列表中。
name_list = ['yeyiyi', 'shangyingyan', 'ningzaichun', 'ningjie', 'lily', 'fayi']
print('shangyingyan' in name_list)
>>> True
print('nixiaozi' in name_list)
>>> False
print('Troy' not in name_list)
>>> True
print('ningjie' not in name_list)
>>> False

总结

本篇主要是对 Python 中条件语句的学习和运用,同时还做了适当的功能延伸探索。

我最近在看一些用 Python 实现的项目源码,发现这个知识点的出镜率还挺高,掌握它们对实际开发会大有裨益。


作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏️ | 留言📝

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。