Python与或运算

article/2025/8/21 10:05:27

今天碰到一道有意思的题目,看了之后发现自己对Python与或的理解还是欠缺,如下。
题目:求1+2+…+n
来源:Leetcode
在这里插入图片描述
如果不加限制,我们有很多方法计算该值,例如高斯公式,递归等。
我们思考下递归的解法:

    def sumNums_if(self, n: int) -> int:if not n: return nreturn n + self.sumNums_if(n-1)

即当n等于0的时候,开始自底向上返回。
那么,当限制了if语句的时候,我们如下实现这个判断呢?
实际上,我们可以使用and或者or运算符实现该操作,代码如下:

    def sumNums(self, n: int) -> int:return n and n + self.sumNums(n - 1)

and 运算符:每一项都为True,则整个表达式为True,当执行到某一个False项时,不再往后运行,直接返回False
or 运算符:与and不用的是,or运算符只要表达式中有一项为True,则整个表达式为True,即执行到某一个True项时,也不再向后执行,直接返回True
我们来看点例子:

1、二元运算

如果一个True,一个False或两个false:

return True and False # 返回Falsereturn True or False # 返回True

如果两边都是True,则and返回右边的,or返回左边的:

return 1 or 2 # 返回1return 1 and 2 # 返回2

2、多元运算:

从左到右,两两运算,两两运算时逻辑见上面二元运算

例如下面三句代码,第一句返回1,第二句返回3,第三句返回2

return 1 or 2 or 3 #返回1return 1 and 2 and 3 #返回3return 1 and 2 or 3 #返回2

我们在回头看下上面的and型递归实现,是不是豁然开朗了呢~


http://chatgpt.dhexx.cn/article/yFD7MSdO.shtml

相关文章

sql查询数据表某列的重复值并计数

查询sql为: SELECTdevice_id,count( device_id ) AS number FROMcms_sticker_member GROUP BYdevice_id HAVINGcount( device_id ) > 1 ORDER BYnumber DESC; 结果:

查询多个字段同时重复2次以上的记录的sql的次数

表数据如上图, 1.筛选 type、pid 重复的数据的次数大于等于2的 次数和对应的数据值 SELECT COUNT(*),TYPE,pid FROM AREA GROUP BY TYPE,pid HAVING COUNT(*)>2; 2.筛选 type、pid 重复的数据的次数大于等于2,并且对应的 pid和type值相反的重复的数…

sql查询、删除重复相同数据的语句或只保留一条数据

1、查询(字段1, 字段2, 字段3)全部重复相同的数据 SELECT * FROM 表 WHERE (字段1, 字段2, 字段3) IN (SELECT 字段1, 字段2, 字段3 FROM 表 GROUP BY 字段1, 字段2, 字段3 HAVING COUNT(*) > 1) ORDER BY 排序字段2、过滤(字段1, 字段…

分享SQL重复记录查询的几种方法

SQL重复记录查询的几种方法,需要的朋友可以参考一下 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 代码如下: select * from people where peopleId in (select peopleId from people group by peo…

SQL查询重复记录

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、删除表中多余的重复记录,重…

为什么int无法转换为Double????

规律:拆、装箱和升、降级两者可以在同一条语句中进行,但是一定要先拆箱或装箱再升级或者降级。。。 一条语句中,int无法转换为Double,因为这里涉及到先升级再装箱子,拆装箱一定要在升降级前面。。。。。 一条语句中&…

C++中int或double与string的相互转换

一、int转string 1.c11标准增加了全局函数std::to_string: string to_string (int val); string to_string (long val); string to_string (long long val); string to_string (unsigned val); string to_string (unsigned long val); string to_string (unsigned long …

java byte[]转int和double

一般无需java来处理byte字节的数据转成 int , C语言更适合干这事. 但是无奈遇到了这种需求. 网上百度了一小部分代码, 发现好多错误代码… 干脆自己手写了一遍… byte[]数据的格式协议文档如下: 先上使用代码 byte[] hex Base64.getDecoder().decode(data); int head Read…

详细讲解int、float与double的区别

最近为了看一下float的精确度仔细看了一下这三种数据在内存中的样子,看了一下别人的博客发现大家对精度都有这不同的定义,我自己也简单画了一下。 下面来主要讲解一下int、float与double三者的区别与详解 一、int(最简单的一种)…

c++ string转int, double,int,double转string

c string与常用数值变量互转 写了几个字符串与数值变量互相转换的几个函数,每次用到都要上网查一堆,耽误时间,写好放到这里备用。方法有很多,这里列出来测试过能用的,其他方法慢慢添加。以下函数自动判断int或者double…

C++下string类型转double类型

最近coding的时候随手写了std::stod()函数来进行类型的转换,发现输出的时候自动做了小数位的截取 尝试使用std::stold()函数转换成long double类型之后,依旧不能解决问题,输出依旧不是想要的 发现网上对这个问题的解答没有,于是…

double类型转换成int类型

1、案例演示 public class test09 {public static void main(String[] args) {double a 5000.44;double b 100.12;double v a / b;int i new Double(v).intValue();System.out.println(i);System.out.println(v);} } 运行结果: 49 49.944466640031955 2、源…

移动光猫超级管理员密码获取

我的型号是ZN-M142G 一 、开启telnet 1.电脑开启telnet (自行百度) 2.登录192.168.1.1 3.把路由器后台网址替换(如果光猫已经开启telnet请忽略)​​​​​​http://192.168.1.1/getpage.gch?pid1002&nextpagetele_sec_ts…

移动光猫只有一个lan口?其他是电视用,如何增lan口

输入192.168.1.1,用超级账号登陆,(如何得到超级账号呢,可以让维护小区的移动工作人员给你)我发现家里的光猫只有一个lan口,通过超级账号登陆发现,其他三个(lan1~lan3)都分…

移动光猫 烽火HG6145F 获取管理员密码 启用USB存储功能

总结一下移动光猫烽火HG6145F获取管理员密码的过程,从网上没有搜到这个型号,但是可以参考一下相关类似型号,参考链接附后。 1、连接光猫:首先连接好光猫的WIFI,确认可以访问路由默认网关192.168.1.1 2、获取光猫MAC&…

移动光猫连接移动硬盘变成超小型nas【HS8545M5

移动硬盘连接光猫usb接口 一.第一步 先准备好移动硬盘和光猫 我的移动硬盘装了个盒子1TB 连接好usb接口 我家的光猫是华为定制版的 HS8545M5 当然肯定不会这么简单的就完成了 2.这个需要登录光猫的超级管理员打开媒体共享功能的 当然移动公司不会简单给你超级账号的密码 可以…

最新中国移动光猫改桥接方式(中兴ZXHN F663NV9)地域:贵州 适用于动态超密

​ 话不多说,直接开干 1.首先拔掉光纤 2.把电脑网线插进光猫1口 输入管理地址192.168.1.1 ​ 3.接着输入管理员密码,就是光猫背面的那个 进入后台后选择 网络——远程管理 然后复制loid和password以及sn备用 4.然后重置光猫 用针恢复孔5秒以上&…

移动光猫(吉比特TEWA-272G)进入高级管理界面的简单方法

参加中国移动光纤宽带升级千兆活动后,之前通过超级用户身份已调成桥接模式的光猫(GS3101)免费更换成了吉比特TEWA-272G(2021-10-30生产,硬件版本号HV1.0.0.0、软件版本号 V1.0.0.0),只能用新设备后面注明的user和口令进入基础管理界面进行…

移动光猫GM219-s多LAN端口的网络开放

起因 最近(2018.08)装了移动的50M宽带(成都),在默认情况下GM219-S这款光猫总共有4个端口,但是只有LAN1口是可以连接电脑上网,其他的3个端口只能用于电视盒子之类的用途。就是下图这货→_→   …

移动光猫之桥接教程

背景:移动宽带默认是移动光猫拨号,使用的路由模式,但移动的猫太差劲,需要将移动光猫改为桥接模式,改用红米AC2100路由器进行拨号上网。说干就干,开工。 1、获取光猫超级用户和密码。 用户名:C…