请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

三元表达式的另一种写法?

根据逻辑与and和逻辑或or的语法:
三元表达式是否可以用如下方式来写,是在难以接受python这种三元表达式的写法 :<

x = 20
y = 10

r1 = x if x > y else y
r2 = x > y and x or y

print(r1) # 20
print(r2) # 20


试了一些常用的情况,基本没毛病。
请老师也帮忙参考一下是否可以直接这么用,不考虑去代码可读性的情况下。

正在回答 回答被采纳积分+3

插入代码

1回答

7七月 2019-03-11 02:37:09

这种用逻辑运算符组合的操作 本身就没有通用性,如果判断条件更为复杂呢,你能确保运算优先级吗。还有就是,r2的写法,基本上别人是理解不了他是一个三元表达式的。

0 回复 有任何疑惑可以回复我~
  • 提问者 Max_wen #1
    判断条件再复杂也是返回True/False啊,无非加括号提权,我同意这种写法没有通用性。只是在探讨这种写法的可行性与否,以及是否能替代三元表达式?
    回复 有任何疑惑可以回复我~ 2019-03-11 11:08:11
  • 7七月 回复 提问者 Max_wen #2
    你试试更复杂的表达式,你咋能确保最终返回结果呢?你这里只是True和False?最终不用返回结果?
    回复 有任何疑惑可以回复我~ 2019-03-11 11:50:50
  • 提问者 Max_wen 回复 7七月 #3
    您是老师,我在跟您探讨,结果我问了一个问题你给我回了这么几个问题?
    我逐一理解一下您的问题并尝试做回答,不对的地方请指正:
    1. 我们上面讲到复杂性指的是判断条件,不是表达式,如果表达式很复杂我完全可以不用三元或者我说的这种,既然是做比较运算判断条件,所以我的结论是,无论多复杂,都会返回True/False。 
    2. “咋能确保最终返回结果”,这句有点没看明白,如果是指整个表达式的返回结果不能确保,我提问里有代码演示,判断条件为True返回and后的值,False则返回or后的值。
    3. “你这里只是True和False?最终不用返回结果?”这句我看做一个问题,还是如代码中的简单演示,判断条件的True和False决定了返回哪一个值。所以,最终是一定会返回结果的。
    回复 有任何疑惑可以回复我~ 2019-03-11 14:06:37
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号