【Day 04 Java转Python】告别switch-case——Python的条件与循环优雅写法
Java程序员看到Python的if-elif-else和for循环时可能会嘀咕“就这我的switch-case呢我的传统for (int i0; in; i)呢”别急Python把“复杂”留给了自己把“简单”留给了你。今天我们就来唠唠Python里如何用最少的代码搞定条件判断和循环顺便让Java里的那些老写法“退休”。1. 条件判断if-elif-elseswitch-case的“平替”Java选手的日常intscore85;Stringgrade;switch(score/10){case10:case9:gradeA;break;case8:gradeB;break;case7:gradeC;break;default:gradeD;}这代码看着就累还得记得写break忘了就“穿透”了。Python的“直给”写法score85ifscore90:gradeAelifscore80:gradeBelifscore70:gradeCelse:gradeD简洁、直观没有break没有switch的语法负担。Python里没有switch-case因为Python的if-elif-else已经足够优雅。你甚至可以这样写gradeAifscore90elseBifscore80elseCifscore70elseD当然可读性优先建议还是用多行if-elif对比速览特性JavaPython多分支switch-case仅支持整数、枚举、字符串if-elif-else任意条件表达式条件表达式三元运算符cond ? a : ba if cond else b代码块大括号{...}缩进强制2. 循环for与whilePython的“降维打击”for循环更像“增强for”Java里常用的两种for// 传统forfor(inti0;i5;i){System.out.println(i);}// 增强forfor-eachString[]arr{a,b,c};for(Strings:arr){System.out.println(s);}Python里只有一种for但它同时覆盖了两种需求# 1. 遍历数字范围相当于传统forforiinrange(5):# 0,1,2,3,4print(i)# 2. 遍历可迭代对象相当于增强forarr[a,b,c]forsinarr:print(s)核心函数range()range(stop)生成 0 到 stop-1range(start, stop)生成 start 到 stop-1range(start, stop, step)指定步长foriinrange(2,10,2):# 2,4,6,8print(i)while循环和Java几乎一样count0whilecount5:print(count)count1语法相似只是条件后面没有括号没有大括号靠缩进。3. 循环控制break、continue、elsebreak和continue和Java用法完全一致但Python的for...else是个有趣的特性foriinrange(3):ifi2:breakelse:print(循环正常结束没有被break)当循环没有被break中断时会执行else块。这在查找元素时很有用nums[1,2,3,4,5]target6forninnums:ifntarget:print(找到了)breakelse:print(没找到)# 这个会执行4. 实战小练习判断质数并输出题目编写一个程序让用户输入一个正整数判断它是否为质数只能被1和自身整除。如果是质数输出“是质数”否则输出“不是质数”并输出它的一个非1非自身的因数。要求使用for循环和if判断并考虑代码简洁性。参考代码可直接运行numint(input(请输入一个正整数))ifnum2:print(f{num}不是质数)else:# 只需检查到 sqrt(num) 即可is_primeTrueforiinrange(2,int(num**0.5)1):ifnum%i0:print(f{num}不是质数因为可以被{i}整除)is_primeFalsebreakifis_prime:print(f{num}是质数)运行示例请输入一个正整数17 17 是质数请输入一个正整数18 18 不是质数因为可以被 2 整除5. 小扩展用for…else简化上面的代码可以用for...else让结构更紧凑numint(input(请输入一个正整数))ifnum2:print(f{num}不是质数)else:foriinrange(2,int(num**0.5)1):ifnum%i0:print(f{num}不是质数因为可以被{i}整除)breakelse:print(f{num}是质数)6. 结语Java的switch-case和传统for循环就像手摇拖拉机虽然功能强大但操作起来有点累赘。Python的if-elif-else和for-in则像电动车少了很多机械步骤让你更专注于前进的方向。今日金句Python的if-elif-else告诉你能用简单逻辑解决的事别整花里胡哨的语法。Python的for循环告诉你遍历万物皆可迭代别再数下标了。动手试试用while循环改写上面的质数判断并思考哪种循环更适合这个场景欢迎在评论区分享你的代码。下篇预告Day 5 我们将深入函数与参数魔法看看Python如何用*args和**kwargs玩转可变参数告别Java的方法重载本文代码基于Python 3.14在VSCode中测试通过。关注我每天一篇Java转Python干货