首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从循环条件代码里,能在面试甄别程序员是否是高级

判断闰年条件如下:第一是否能被4整除但不能不100整除,如果是,则是闰年,第二,是否能被400整除,如果是,也是闰年。     这个需求简单到了极点,但可以小处见大,下面给出一个示例代码。    ...5第6行代码里,通过了if语句来判断是否是闰年,如果不是,则走第10行else分支语句。    ...我们看到,这个例子第5第6行条件语句里,用到了&&和||来进行and和or操作,请大家注意别把这个和&和|混淆,一个&和一个|是位操作(用地方不多,所以这里不讲),而两个&&和两个||是布尔操作。...原因是,我们在做代码测试时,得完全覆盖条件表达式各种情况,比如在判断闰年例子里,我们用测试案例如下。     1是能被4整除但不能被100整除年份,比如2016。    ...条件n)     如果业务需求真的那么复杂,我们宁可分解成如下代码。     if(条件1 ){           if(条件2){}…     }     else     {}

82230

这个Excel目前知道张三名字,想根据张三去取他体重,应该怎么做

二、实现过程 针对这个问题,【猫药师Kelly】给了一个思路,使用姓名作为index,然后loc,代码如下: df = pd.read_excel('0.xlsx') print(df.loc[df["...细心小伙伴可能看到了上图中还有一串红色告警,提示:UserWarning: Pandas requires version '2.7.3' or newer of 'numexpr' (version...这个是告警,原因是Pandas依赖numexpr包,而改包版本低于2.7.0导致系统报错。...解决方法也非常简单,在命令行输入命令:pip install numexpr --upgrade --user 即可解决。 之后再运行程序,即可发现告警不复存在了,控制台清爽了许多!...三、总结 大家好,是皮皮。这篇文章主要盘点了一个Pandas处理Excel问题,文中针对该问题,给出了具体解析和代码实现,帮助粉丝顺利解决了问题。

61920
您找到你想要的搜索结果了吗?
是的
没有找到

看似简单但容易忽视编程常识

,第一段代码问题,我们看到只是为了保护是否能做couponing条件,但是并没有去思考,条件不满足时候,如何去做,是否有能力去恢复这个错误,确实无法恢复时候,我们是否还要在错误道路上越错越远...,这一点非常重要,也很容易忽略,需要在编码过程,进行完整思考才会意识到这个问题如果错误继续执行下去,直到程序运行到下一个我们不期望点,如果下一个不期望点,代码上也遵循这个风格,简单判断不为...一般称这种代码代码盲目容错,看上去这行代码很健壮,不会报错,但是不报错,不能影响错误客观存在性,错会还是会存在,遇到错误时候,我们应该首先想到是恢复这个错误,对容错问题,是需要进行非常深入很全局思考才能做决定...key逐个取值,如果取到值不为null,则放入到另外一个Map,这里其实可以写一个putNotNull方法来封装逻辑,这种做法非常有效。...进行耦合,看上去这段代码已经稳定了,但是仔细观察后发现,canCouponing这个方法依赖了userInfo,这个依赖貌似还是会存在很多问题,因为如果判断条件超出了userInfo范畴,则这个地方又会变得难以解决

63030

MYSQL ANTIJOIN 提高20% 性能 真的?

用一句话可以解释: “优化器现在将WHERE条件NOT IN(子查询)、NOT EXISTS(子查询)、IN(子查询)不为、EXISTS(子查询)不为转换为反连接,从而删除子查询。”...,意思是不要员工表那些出生年龄小于 1960-01-01 并且是男性员工。...,就是一次建立所有要进行检索记录,因为符合条件记录大概率会比整个表记录要少,这个例子过滤条件并不是很好,符合这个条件的人数比较多,占比40% ?...那怎么能体现MYSQL 8 antijoin优势,我们在查询添加了一个条件 select first_name,last_name from employees.employees as em...所以通过上面简陋测试,可以粗略得出,如果条件不给力,过滤数据不精准,则MYSQL 5.7 并没有太坏表现,而MYSQL 8 可能会更慢,而如果条件精准,通过过滤条件能将一大部分不合格数据挡在外部

57820

回文数判定算法深入研究(JavaScript)

学校里做到了回文数判定算法(当时用是VB,能过就行了,但是怎么会就这么满足 )。决定使用现在最凉JavaScript重写该算法,把自己一些想法在这里做一个总结。..."dcba" 那么,现在有一个参数x储存了需要判断回文数,如何将这个x转换为字符串?...首先最简单一种,x.toString(),效率怎么样?在设备上执行1000万次耗时618±5ms。有没有效率更高方法?...(这里不是本文重点,本没有必要吹毛求疵,但请允许凑一点字数 ) 这已经很快了,还有没有更快?...影响其实不是很大,因为若为偶数个,能直接取完;奇数个的话,中间数字永远和自己相等,可以直接忽略。 三[2]、如何实现? 说出来你可能不信,我们只需将循环条件修改为 tmp > result 。

48920

性能大PK count(*)、count(1)和count(列)

最近工作听到组内两名研发同学在交流数据统计性能时候,说到以下内容: 你怎么能用 count(*) 统计数据,count(*) 太慢了,要是把数据库搞垮了那不就完了么,用 count(1),这样比较快...但要是在后面加了where查询条件时,统计总数也没有像想象那么快了。 InnoDB 引擎:执行 count(*),需要将数据一行一行地读,再统计总数。...因此,MySQL优化器会找到最小那棵树来遍历。 如果你使用过 show table status 命令的话,就会发现这个命令输出结果里面也有一个 rows 值用于显示这个表当前有多少行。...执行效果上: count(*)包括了所有的列,相当于行数,在统计结果时候,不会忽略列值为null count(1)包括了忽略所有列,用1代表代码行,在统计结果时候,不会忽略列值为null count...执行效率上: 列名为主键, count(列名) 会比 count(1)快 列名不为主键, count(1) 会比 count(列名)快 如果表多个列并且没有主键,则 count(1) 执行效率优于 count

1.4K10

Python 基础二

你要判断那条岔路是你真正要走路,如果我们想让程序也能处理这样判断怎么办? 很简单,只需要在程序里预设一些条件判断语句,满足哪个条件,就走哪条岔路。这个过程就叫流程控制。...缩进 这里必须要插入这个缩进知识点 你会发现,上面的if代码里,每个条件下一行都缩进了4个空格,这是为什么?...这就是Python一大特色,强制缩进,目的是为了让程序知道,每段代码依赖哪个条件如果不通过缩进来区分,程序怎么会知道,当你条件成立后,去执行哪些代码?...Python是门超级简洁语言,发明者定是觉得用{}太丑了,所以索性直接不用它,那怎么能区分代码?答案就是强制缩进。...Python缩进有以下几个原则: 顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进 同一级别的代码,缩进必须一致 官方建议缩进用4个空格,当然你也可以用2个,如果你想被人笑话的话

22050

【python系统学习10】布尔值

本节来整理另一种简单数据类型--布尔值 布尔值(bool) 布尔值和其数据值 计算机可以用数据进行判断,若判断为则执行特定条件代码块。若不为则执行相反指定条件代码块或不执行任何内容。...布尔运算 什么是布尔运算 根据布尔值数据所做逻辑判断,叫做布尔运算。 下例,3>1就是布尔运算。 print(3>1) 布尔运算产生布尔值 试想一下,为什么我们这么写,if条件就执行了?...if 5 > 3: print('布尔运算产生布尔值') if语句后边条件判断语句需要一个布尔值,来指定判断后逻辑,如果判断为,则将执行if后代码块。...空格字符串是,这句话会被执行。') # 可见,只要字符串不为空串,都为。 if [0]: print('列表不为空,条件,这句话会被执行。')...遍打印“真棒”任务 # 参考代码位于源代码files文件夹下对应章节py文件 本文使用 mdnice 排版

1.8K30

C语言常用知识没多少之C语言三大结构

从表达式1开始计算,只要有1个不为0时就执行相应语句块,否则继续向下计算。如果全部都为0的话,则执行语句块n内容。...如果当中有一条语句块被执行,即对应表达式不为0的话,后面的表达式不会被计算,任何语句块都不被执行。...如果或满足条件的话,则执行循环体。循环体执行完后继续判断循环条件。直到循环条件为假时,否则一直执行循环体。 循环条件和循环体要求与for语句一样,在此不再赘述。...循环体; }while(循环条件) 执行过程是首先执行循环体,执行完后判断循环条件是否为或满足条件,若为或满足条件,则继续执行循环体,知道条件为假或不满足...如果有问题可以在公众号回复栏写出问题描述发给我,看到的话会进行相应回复。如果发现文章有问题,也欢迎在公众号回复栏中提问,我会查阅资料进行确认并做出修改和回复。

1.3K30

Junit | 不会写单元测试,就如同不穿秋裤熊孩子在冬天瞎跑

以往Android开发生涯,几乎没有使用过单元测试,也没有见过有人去介绍过,好像这个东西在国内开发者眼里并不是很重要,或者说大多数开发同学没有专门时间去使用单元测试框架,也许更重要原因应该是个人孤陋寡闻...单元测试是针对最小单元编写测试代码。在 Java ,最小功能单位是方法,因此,对Java 程序进行单元测试就是针对单个 Java 方法测试。...assertNull 断言传入对象是为空 assertNotNull 断言传入对象是不为空 assertTrue 断言条件 assertFalse 断言条件为假 assertSame 断言两个对象引用同一个对象...(未使用Junit) 如果是没有使用 Junit,我们可能会写出下面这样测试代码: fun main() { println(isBrackets("{}")) xxxx... } 相比来说我们如果我们增加别的方法...使用过程,这种参数化测试如果我们没有加错误提示,寻找问题时可能不容易找到那个测试用例出了问题,所以这点也需要注意。 assertThat用法 用于为断言失败后输出信息提高可读性。

73350

python流程控制

这就是Python一大特色,强制缩进,目的是为了让程序知道,每段代码依赖哪个条件如果不通过缩进来区分,程序怎么会知道,当你条件成立后,去执行哪些代码?...Python是门超级简洁语言,发明者定是觉得用{}太丑了,所以索性直接不用它,那怎么能区分代码?答案就是强制缩进。...在python程序,循环也是存在。那么这个循环在Python中就是流程控制语句while。 while是一个条件循环语句,与if声明相比,如果 if 后条件,就会执行一次相应代码块。...而while代码块会一直循环执行,直到循环条件不再为。 while:适合于循环次数是未知。最好选择while循环....程序当遇到 continue 语句时, 程序会终止当前循环,并忽略剩余语句,然后回到循环顶端。在开始下一次迭代前,如果条件循环,我们将验证条件表达式。

1.9K40

方法论:在不是太懂源码情况下,是怎么定位源码问题

那么,如果真的认为是源码 Bug,我们该怎么去定位?...当我第一次遇到这个问题时候,也是抱着,算了不管了后来再遇上,烦,不如提个 issue 碰碰运气吧再后来多遇上几次,实在不想忍了,晚上调试一下看看,就花一个晚上,不行拉倒因此才有了接下来一些努力。...调试代码光有决心还是没有的,得实际行动。但一个巨大问题摆在面前,pnpm 代码也没看过鸭,调个啥玩意???因此,第一个问题,是怎么把 pnpm 源码跑起来调试?...这时候就要用到条件断点,如何设置条件断点?...那么,当你遇到问题时,是选择避开它,还是选择解决它如果这篇文章对您有所帮助,可以点赞加收藏,您鼓励是创作路上最大动力。

89520

shell学习集合-shell第十三讲

但是我们在工作往往不是这么使用,我们会将字符串赋值给一个变量,然后拿这个变量去跟目标字符串做比较,这时候重点就来了,往往匹配上出现问题,比如会报这样错误:test.sh: 第 4 行:[: 参数太多...pig" ],如果你就是不加双引号,否则就报test.sh: 第 4 行:[: 参数太多这样错误直接懵逼了, 1.2、= =本身只是用做赋值操作,建议大家不要去用=来做字符串比较,因为比较诡异,...0 两个字符串确实是不相等条件,返回值为0。...1.4、-n与-z -n和-z都是用来判断字符串是否空,不过两者也是有区别的,如下所示: | -n | 当字符串长度不为0时条件,字符串长度为0时条件为假。...0时条件

47720

python不相等两个字符串 if 条件判断为True详解

今天遇到一个非常基础问题,结果搞了好久好久…..赶快写一篇博客记录一下: 本来两个不一样字符串,在if 条件判断中被判定为True,下面是错误代码: test_str = 'happy' if...Gumby') 这就是if语句,让你能够有条件地执行代码。这意味着如果条件(if和冒号之间表达式)为前面定义,就执行后续代码块(这里是一条print语句);如果条件为假,就不执行。...如果省略里面的else子句,将忽略并非以Mr.或Mrs.打头名字(假设名字为Gumby)。如果省略外面的else子句,将忽略陌生人。 6)更复杂条件 1....例如,仅当x和y都为时,表达式x and y才为。因此如果x为假,这个表达式将立即返回假,而不关心y。实际上,如果x为假,这个表达式将返回x,否则返回y。...在表达式x or y如果x为,就返回x,否则返回y。请注意,这意味着位于布尔运算符后面的代码(如函数调用)可能根本不会执行。

6K10

华山论剑之契约式编程与防御式编程

相信这两种程序猿都有自己理由,第一种程序简洁明了,代码逻辑干净,但一旦出错,就会崩溃,第二种程序耐操,随你数据怎么错,都能不Crash,但代码到处存在非空判断,臃肿、重复。...但实际上,这是一个悖论,开发阶段错误处理代码在开发阶段被断言给拦截掉了,但错误处理代码也是人写,那么如何去检测『错误处理代码可能发生错误?...这个不多说,毕竟大部分代码如果有异常,最简单就是try catch了,甚至见过把所以代码直接try catch,你是有多不相信人类。...契约所约束,是『一个为了确保程序正常运行条件』,一旦契约被损毁,只有一个原因,那就是程序出了Bug,例如一个数据字段,在我处理时候,必须保证是不为,那么谁来保证这一点,一定是调用方(或者说是其它模块...那么到底该怎么办认为,如果能在公司层面推广契约式编程,首先是对开发效率提升,让每个人都对自己写代码负责,在开发者之间建立良好信任关系,同时也能减少不必要沟通成本和精力。

1.2K30

方法论:在不是太懂源码情况下,是怎么定位源码问题

那么,如果真的认为是源码 Bug,我们该怎么去定位?...当我第一次遇到这个问题时候,也是抱着,算了不管了 后来再遇上,烦,不如提个 issue 碰碰运气吧 再后来多遇上几次,实在不想忍了,晚上调试一下看看,就花一个晚上,不行拉倒 因此才有了接下来一些努力...调试代码 光有决心还是没有的,得实际行动。 但一个巨大问题摆在面前,pnpm 代码也没看过鸭,调个啥玩意??? 因此,第一个问题,是怎么把 pnpm 源码跑起来调试?...这时候就要用到条件断点,如何设置条件断点?...既然知道了这个,我们就知道了这个错误出现场景: 1.

63510

为什么 Python、Go 和 Rust 都不支持三元运算符?

expression1 : expression2,如果 condition 为,则取 expression1,若不为,则取 expression2。 语法简化形式“a ?...,而且,当“expression1”很长时候,很容易就忽略掉它条件。...则先对 expression1 求值,若也为,则不会继续对 expression2 求值,若 expression1 不为,则对 expression2 求值。...因此,PEP-308 被重开和更新,并很快就在次年 2.5 版本实现了。 前文已提到过这个让一些人感觉不舒服方案了,因为它没有将条件判断逻辑放在最前面。 那么,为什么最后胜者会是它?...: b 表示:如果 a 不为 null,则赋值给 result ;否则将 b 赋给 result) 由于有这种语言设计层面的区别,因此在面对“是否要支持三元运算符”这个问题时,Rust 和 Python

4.2K10

Python条件控制之if

) 我们可以看到先期判断条件 需要用 If()表达 之后一个很重要动作 也是新手很容易忽略 就是一定在之后加上一个冒号“:” 下一行开始进行if()条件时 你想要做操作 在Python...代码块是按照缩进进行表达这个我们之前讲过) 一定要记得,否则程序会异常 之后跟一个else: 记住,这里一样有一个冒号“:” 之后需要写当以上条件都不成立时 你要做操作 (一样有缩进,重要事强调...30次) 那可能有的小伙伴会问 如果一个事件 不止一个判断条件怎么办?...60分到85之间则 输出及格 60分以下则输出 不及格 好下面我们看一下 其中,“and”关键字 代表两个条件必须都为才能 执行下面的操作 这段代码基本实现了我们想要 为什么说是基本?...85 来执行一下看看如何 这显然不符合逻辑 好,我们把他改良一下 这样在使用就没有问题了 但是可能还需要“完善”一下 那就是如果用户输入错误 输入了一个小于值 这可能是不符合逻辑 所以我们可以继续优化代码

77650

【译】通过可选链操作符重构大型代码经验教训

需要寻找场景 如果决定重构代码,那么,需要针对哪些场景? 最简单明显就是将foo && foo.bar优化成foo?.bar。...我们仍然需要判断条件,事实上,也一直在这么做。很高兴在编辑器可以通过ESLint进行及时提醒,而不必等待实际运行代码时候才发现错误。.... */ } 此时,若foo为空值时,可选链操作符语句将返回undefined,即整个判断条件,这基本上就和上边例子结果一致。在其它大多数情况,这个场景也不会有太多不同。...== baz) { /* ... */ } 此时,当foo为空值、baz不为undefined时,整个判断条件就为,和重构之前表现结果并不一致。...(); 在第一种情况下,返回值是有条件;而在第二种情况下,任何时候都会有返回值。如果该逻辑是函数最后一段语句,将不会引入任何问题。若不是,则将改变代码执行流程。

81330
领券