2301_76719477 2023-04-08 20:30 采纳率: 60%
浏览 11
已结题

Python中运算符的优先问题

s="0" and "2"
我理解的是先s=“0”,然后s and“2”因为s的bool值为False,遇假输出,所以s应该输出0
但是输出结果为2
为什么QAQ
这个是属于运算符的优先问题吗

  • 写回答

2条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2023-04-08 20:42
    关注

    等号作为赋值运算,优先级是最低的,所以先计算等号右边的逻辑运算,"0" and "2",因为你用引号把0和2圈起来,它们就不是数字,而是字符了。而除非是空字符,其它字符的bool值都是True。所以检查左边"0"的结果是True,因为是与运算(and),还要检查右边,右边"2"也是True,所以最终结果返回的是右边的值,然后赋值给s,最后s等于字符串“2”。
    如果想要s等于“0”,把and换成or就可以,这也是程序设计里比较常用的短路计算小技巧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 4月8日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度