900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 三元操作 三元操作符 if-else / ? :

三元操作 三元操作符 if-else / ? :

时间:2021-12-12 12:20:56

相关推荐

三元操作  三元操作符 if-else / ? :

Python 三元操作符 if-else , 其他语言三元操操作符 ? : ;“三元操作”语句,她也就是一个表达式。

【学习的细节是欢悦的历程】

Python 官网:/

Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……

地址:https://lqpybook.readthedocs.io/

自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。

——华罗庚

My CSDN主页、MyHOT博、My Python 学习个人备忘录好文力荐、 老齐教室Python 三元操作符 if-else三元操作语句( 其他语言三元操操作符 ? : )

本文质量分:

【91】本文地址: /m0_57158496/article/details/130412250

CSDN质量分查询入口:/qc

目 录◆ 三元操作语句1、“三元操作”概念2、 Python “没有”三元操作符3、 Python 三元操作举例3.1 简单的非A即B3.2 小“程序”3.3 N 元操作语句——“三元操作”多重嵌套3.4 解构“三元操作”嵌套 4、完整源码

◆ 三元操作语句

1、“三元操作”概念

“三元操作”百科词条说:

采用三元操作符对 ? : 对表达式进行运算,这种操作符比较特别,因为它有三个操作对象,但它确实属于操作符的一种,它最终也会生成一个值。

其表达式采取下述形式(语法):

boolean-exp ? value0 : value1

在表达式 boolean-exp ? value0 : value1 中,如果“布尔表达式”的结果为 True ,就计算“value0”,而且这个计算结果也就是操作符最终产生的值;如果“布尔表达式”的结果为 False ,就计算“value1”,同样,它的结果也就成为了操作符最终产生的值。

当然,也可以换用普通的 if-else 语句,但 三元操作符更加简洁。尽管引以为傲的就是它是一种简练的语法,而且三元操作符的引入多半就是为了体现这种高效率的编程,但假如你打算频繁使用它,还是要先多作一些思量——因为它很容易就会产生可读性极差的代码。

这种条件操作符的使用目的,有时是为了它的“副作用”——它运算生成的值。一般而言,我们需要的是其运算的结果值,这正是三元操作符与if-else不同之处。

(点击“三元操作”蓝色文字跳转,了解更多)


“三元操作”百科词条中列举的三元操作符半角问号冒号对(英文状态问号冒号对) ? : ,是大多数语言采用的“三元操作符”。问号 ? 前面是条件表达式,冒号 : 分隔需选择返回的对象,条件表达式值为 True 时返回冒号 : 左面对象,条件表达式值为 False 时返回冒号 : 右边对象。问号冒号对 ? : 没有特定含义,对写代码和读代码的人,都可能造成一定困扰。如果用上“三元操作语句”多重嵌套,电脑也会被绕晕的吧?

相对于 Python 采用的 if-else 关键字对,她有常规 if-else 一样的含义,使用起来相对更易于理解和读写。即使用上几层嵌套,也并不是那么难以识记。当然,您要不断叠加“三元操作”,从而达到 N 元操作,那样子也会绕晕读您代码的人,虽然 Python 编译环境还是能被您正确驱使。但,“代码更多是写给人看的,只是偶尔让机器跑跑”,所以大量而频繁使用“三元操作语句”,还是需要谨慎操作的。

回页目录

2、 Python “没有”三元操作符

Python“没有”三元操作符,她就用的 if-else 关键字对,把需选择返回的两个对象分别放在 if-else 关键字对两端,条件表达式放在 if-else 关键字对中间。条件表达式值为 True 时返回 if-else 关键字对左边对象,值为 False 时返回 if-else 关键字对右面对象。写起来感觉跟写正常的 if-else 语句几乎一样顺手,就是有一两层“三元操作嵌套”,也不是太难读。代码中嵌套“三元操作”太多,也一样让人晕头转向,但只要语法和条件表达式不写错,Python 解释器一样能理得清,给出您要的程序结果。

实际上,不管您写出我多长的 Python “三元操作”语句,她也就 是一个表达式,始终只会 返回一个值。我们启用“三元操作”,恰恰就是希罕她的这个特性。

Python 三元操作符语法:

表达式1 if 条件表达式 else 表达式2

当 if 条件表达式值为 True 时,返回结果表达式1,否则返回结果表达式2。

回页目录

3、 Python 三元操作举例

3.1 简单的非A即B

常规的 if-else 代码

def compare(a, b):''' 比较大小,返回大者 '''if a > b:return aelif a != b:return b

三元操作代码

def compare(a, b):''' 比较大小,返回大者 '''return a if a > b else b if a != b else None

调用函数输出结果

if __name__ == '__main__':print(f"\n{'比较大小':^46}{'':~^50}")for i in ((45, 6), ('a', 'A'), (1, True), (False, 1), (56//7, ord('h'))):print(f"\n({i[0]}, {i[1]}) -> {compare(i[0], i[1])}")print(f"\n{'':~^50}")

代码运行效果截屏图片

分别调用两个函数,可以得到一样的输出。嵌套一层“三元操作”就还原了 Python 函数的默认返回空值,代码也还是比较易读。

回页目录

3.2 小“程序”

常规的 if-else 代码输出和“三元操作”输出

weather = input(f"\n输入天气:")if not weather:print(' 输入不可以为空!'.center(42, '~'))exit()def isnice():if '雨' in weather or '雪' in weather:return '路滑'else:return '路好走'print(f"\n\n{weather},{isnice()}。")print(f"\n\n三元操作:\n\n{weather},{'路滑' if '雨' in weather or '雪' in weather else '路好走'}。")

代码运行效果截屏图片

回页目录

3.3 N 元操作语句——“三元操作”多重嵌套

通过“三元操作”多重嵌套运作,可以实现 “n 元操作” ,每增加一层嵌套,就会增加“一元”。但,进行过多层次嵌套“加元”操作,还须谨慎!那样做会让您的代码真的“好难读”的咯。😄

常规的 if-else 代码

def islevel(score: int) -> str:''' 分数等级判定 '''level = Noneif 100 >= score >= 90:level = 'A'elif 90 > score >= 80:level = 'B'elif 80 > score >= 60:level = 'C'elif 60 > score >= 0:level = 'D'else:print('\nErroeType: Input error!', end='')return level

三元操作代码

def islevel(score: int) -> str:''' 分数等级判定 '''return 'A' if 100 >= score >= 90 else 'B' if 90 > score >= 80 else 'C' if 80 > score >= 60 else 'D' if 60 > score >= 0 else print('\nErroeType: Input error!', end='')

调用函数输出结果

if __name__ == '__main__':print(f"\n{'成绩等级判定':^44}{'':~^50}")for i in (98, 56, 78, 34, 678, 83, 100, 7):print(f"\n{i:>3} is {islevel(i)}.")print(f"\n{'':~^50}")

代码运行效果截屏图片

回页目录

3.4 解构“三元操作”嵌套

Python 三元嵌套,倒底是嵌套在前面还是后面呢,让我们炼炼码,看看“到底是前后都可以呢还是只可以其一”。

我们用这段儿“四层三元嵌套”的代码来试炼试炼——

def islevel(score: int) -> str:''' 分数等级判定 '''return 'A' if 100 >= score >= 90 else 'B' if 90 > score >= 80 else 'C' if 80 > score >= 60 else 'D' if 60 > score >= 0 else print('\nErroeType: Input error!', end='')if __name__ == '__main__':score = 89input(f"\nScore {score} is {islevel(score)}\n\n{' 三元嵌套试炼 ':~^44}")

代码运行效果截屏图片

将最后一层 if-else 前面代码,看作一个表达式

def islevel(score: int) -> str:''' 分数等级判定 '''return ('A' if 100 >= score >= 90 else 'B' if 90 > score >= 80 else 'C' if 80 > score >= 60 else 'D') if 60 > score >= 0 else print('\nErroeType: Input error!', end='')if __name__ == '__main__':score = 89input(f"\nScore {score} is {islevel(score)}.\n\n{' 三元嵌套试炼 ':~^44}")

代码运行效果截屏图片

虽然没有得到正确输出,但代码逻辑却没有错误,说明 Python 三元操作的前一个对象是可以嵌套的。

依次将第三、第二层嵌套 if-else 前面的代码看作一个表达式试炼——

都有合法的输出,再次印证“ Python 三元操作”前面的对象是可以嵌套操作的。

把第一层嵌套 if-else 后面的语句看作一个表达式

def islevel(score: int) -> str:''' 分数等级判定 '''return ('A' if 100 >= score >= 90 else 'B' if 90 > score >= 80 else 'C' if 80 > score >= 60 else 'D') if 60 > score >= 0 else print('\nErroeType: Input error!', end='')if __name__ == '__main__':score = 89input(f"\nScore {score} is {islevel(score)}.\n\n{' 三元嵌套试炼 ':~^44}")

代码运行效果截屏图片

同样有合法的输出,这说明 Python 三元操作语句后一个对象,也同样可以嵌套。

再依次试炼后面三层嵌套

两次试炼,输出同样合法。

通过试码,搞明白了,Python 三元操作语句,if-else 关键字对前后的对象表达式,都是可以嵌套的。写代码编程时,可根据项目的实际需求进行设计。

回页目录

4、完整源码

(源码较长,点此跳过源码)

#!/sur/bin/nve python# coding: utf-8def islevel(score: int) -> str:''' 分数等级判定 '''return 'A' if 100 >= score >= 90 else 'B' if 90 > score >= 80 else 'C' if 80 > score >= 60 else ('D' if 60 > score >= 0 else print('\nErroeType: Input error!', end=''))if __name__ == '__main__':score = 89input(f"\nScore {score} is {islevel(score)}.\n\n{' 三元嵌套试炼 ':~^44}")weather = input(f"\n输入天气:")if not weather:print(' 输入不可以为空!'.center(42, '~'))exit()def isnice():if '雨' in weather or '雪' in weather:return '路滑'else:return '路好走'print(f"\n\n{weather},{isnice()}。")print(f"\n\n三元操作:\n\n{weather},{'路滑' if '雨' in weather or '雪' in weather else '路好走'}。")def compare(a, b):''' 比较大小,返回大者 '''if a > b:return aelif a != b:return bdef compare(a, b):''' 比较大小,返回大者 '''return a if a > b else b if a != b else Nonedef islevel(score: int) -> str:''' 分数等级判定 '''level = Noneif 100 >= score >= 90:level = 'A'elif 90 > score >= 80:level = 'B'elif 80 > score >= 60:level = 'C'elif 60 > score >= 0:level = 'D'else:print('\nErroeType: Input error!', end='')return leveldef islevel(score: int) -> str:''' 分数等级判定 '''return 'A' if 100 >= score >= 90 else 'B' if 90 > score >= 80 else 'C' if 80 > score >= 60 else 'D' if 60 > score >= 0 else print('\nErroeType: Input error!', end='')if __name__ == '__main__':print(f"\n{'比较大小':^46}{'':~^50}")for i in ((45, 6), ('a', 'A'), (1, True), (False, 1), (56//7, ord('h'))):print(f"\n({i[0]}, {i[1]}) -> {compare(i[0], i[1])}")print(f"\n{'':~^50}")###print(f"\n{'成绩等级判定':^44}{'':~^50}")for i in (98, 56, 78, 34, 678, 83, 100, 7):print(f"\n{i:>3} is {islevel(i)}.")print(f"\n{'':~^50}")

回页首 上一篇:  “递归三要素”寻踪(浅析递归“精典”框架,领略递归优雅秀气;看到有“递归算法优化”的操作,余试剖之)

下一篇: 对折纸张厚度超过珠峰高度(循环对折0.1毫米纸张,厚度超过珠峰输出对折次数)

我的HOT博:

本次共计收集 198 篇博文笔记信息,总阅读量 31.91w,平均阅读量 1611。已生成 21 篇阅读量不小于 3000 的博文笔记索引链接。数据采集于 -04-28 05:19:06 完成,用时 5 分 1.53 秒。

让QQ群昵称色变的神奇代码

(53374阅读)

博文地址:/m0_57158496/article/details/122566500

点赞:23   踩 :0  收藏:75  打赏:0  评论:16

本篇博文笔记于 -01-18 19:15:08 首发,最晚于 -01-20 07:56:47 修改。ChatGPT国内镜像站初体验:聊天、Python代码生成等

(47405阅读)

博文地址:/m0_57158496/article/details/129035387

点赞:123   踩 :0  收藏:784  打赏:0  评论:73

本篇博文笔记于 -02-14 23:46:33 首发,最晚于 -03-22 00:03:44 修改。pandas 数据类型之 DataFrame

(7992阅读)

博文地址:/m0_57158496/article/details/124525814

点赞:6   踩 :0  收藏:24  打赏:0  评论:0

本篇博文笔记于 -05-01 13:20:17 首发,最晚于 -05-08 08:46:13 修改。罗马数字转换器|罗马数字生成器

(6362阅读)

博文地址:/m0_57158496/article/details/122592047

点赞:0   踩 :0  收藏:1  打赏:0  评论:0

本篇博文笔记于 -01-19 23:26:42 首发,最晚于 -01-21 18:37:46 修改。Python字符串居中显示

(6050阅读)

博文地址:/m0_57158496/article/details/122163023

点赞:1   踩 :0  收藏:5  打赏:0  评论:1

本篇博文笔记于 -12-26 23:35:29 发布。斐波那契数列的递归实现和for实现

( 5278 阅读)

博文地址:/m0_57158496/article/details/122355295

点赞:4   踩 :0  收藏:2  打赏:0  评论:8

本篇博文笔记于 -01-06 23:27:40 发布。个人信息提取(字符串)

( 4876 阅读)

博文地址:/m0_57158496/article/details/124244618

点赞:1   踩 :0  收藏:8  打赏:0  评论:0

本篇博文笔记于 -04-18 11:07:12 首发,最晚于 -04-20 13:17:54 修改。练习:字符串统计(坑:f‘string‘报错)

( 4853 阅读)

博文地址:/m0_57158496/article/details/121723096

点赞:0   踩 :0  收藏:1  打赏:0  评论:0

本篇博文笔记于 -12-04 22:54:29 发布。练习:尼姆游戏(聪明版/傻瓜式•人机对战)

( 4570 阅读)

博文地址:/m0_57158496/article/details/121645399

点赞:14   踩 :0  收藏:42  打赏:0  评论:0

本篇博文笔记于 -11-30 23:43:17 发布。回车符、换行符和回车换行符

( 4322 阅读)

博文地址:/m0_57158496/article/details/123109488

点赞:0   踩 :0  收藏:2  打赏:0  评论:0

本篇博文笔记于 -02-24 13:10:02 首发,最晚于 -02-25 20:07:40 修改。python清屏

( 4217 阅读)

博文地址:/m0_57158496/article/details/120762101

点赞:0   踩 :0  收藏:5  打赏:0  评论:0

本篇博文笔记于 -10-14 13:47:21 发布。密码强度检测器

( 3854 阅读)

博文地址:/m0_57158496/article/details/121739694

点赞:1   踩 :0  收藏:4  打赏:0  评论:0

本篇博文笔记于 -12-06 09:08:25 首发,最晚于 -11-27 09:39:39 修改。罗马数字转换器(用罗马数字构造元素的值取模实现)

( 3790 阅读)

博文地址:/m0_57158496/article/details/122608526

点赞:0   踩 :0  收藏:0  打赏:0  评论:0

本篇博文笔记于 -01-20 19:38:12 首发,最晚于 -01-21 18:32:02 修改。练习:生成100个随机正整数

( 3529 阅读)

博文地址:/m0_57158496/article/details/122558220

点赞:1   踩 :0  收藏:3  打赏:0  评论:0

本篇博文笔记于 -01-18 13:31:36 首发,最晚于 -01-20 07:58:12 修改。练习:班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)

( 3516 阅读)

博文地址:/m0_57158496/article/details/124424935

点赞:1   踩 :0  收藏:2  打赏:0  评论:0

本篇博文笔记于 -04-26 12:46:25 首发,最晚于 -04-27 21:22:07 修改。Python列表(list)反序(降序)的7种实现方式

( 3451 阅读)

博文地址:/m0_57158496/article/details/128271700

点赞:4   踩 :0  收藏:10  打赏:0  评论:8

本篇博文笔记于 -12-11 23:54:15 首发,最晚于 -03-20 18:13:55 修改。我的 Python.color() (Python 色彩打印控制)

( 3334 阅读)

博文地址:/m0_57158496/article/details/123194259

点赞:2   踩 :0  收藏:7  打赏:0  评论:0

本篇博文笔记于 -02-28 22:46:21 首发,最晚于 -03-03 10:30:03 修改。练习:仿真模拟福彩双色球——中500w巨奖到底有多难?跑跑代码就晓得了。

( 3187 阅读)

博文地址:/m0_57158496/article/details/125415626

点赞:3   踩 :0  收藏:4  打赏:0  评论:3

本篇博文笔记于 -06-22 19:54:20 首发,最晚于 -06-23 22:41:33 修改。聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) )

( 3054 阅读)

博文地址:/m0_57158496/article/details/124539589

点赞:3   踩 :0  收藏:2  打赏:0  评论:3

本篇博文笔记于 -05-02 13:02:39 首发,最晚于 -05-21 06:10:42 修改。Linux 脚本文件第一行的特殊注释符(井号和感叹号组合)的含义

( 3020 阅读)

博文地址:/m0_57158496/article/details/123087606

点赞:0   踩 :0  收藏:4  打赏:0  评论:3

本篇博文笔记于 -02-23 13:08:07 首发,最晚于 -04-04 23:52:38 修改。练习:求列表(整数列表)平衡点

( 3001 阅读)

博文地址:/m0_57158496/article/details/121737612

点赞:0   踩 :0  收藏:0  打赏:0  评论:0

本篇博文笔记于 -12-05 23:28:10 发布。推荐条件阅读量突破三千(更多热博,请点击蓝色文字跳转翻阅)回页首

精品文章:

好文力荐:齐伟书稿 《python 完全自学教程》Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)OPP三大特性:封装中的property通过内置对象理解python'正则表达式python中“*”的作用Python 完全自学手册海象运算符Python中的 `!=`与`is not`不同学习编程的正确方法

来源:老齐教室

回页首

◆ Python 入门指南【Python 3.6.3】

好文力荐:

全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛靠谱程序员的好习惯大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

8个好用到爆的Python实用技巧python忽略警告Python代码编写规范Python的docstring规范(说明文档的规范写法)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。