Loading... ## 条件判断 比如,输入价格,根据价格打印不同的内容,在Python程序中,用 `if`语句实现: ```python price = 21 if price > 20: #注意不要漏掉冒号 print("价格为%d元" %(price)) #缩进为四个空格或一个TAB print('价格太贵了') ``` 根据Python的缩进规则,如果 `if`语句判断是 `True`,就把缩进的两行print语句执行了,否则,什么也不做。 也可以给 `if`添加一个 `else`语句,意思是,如果 `if`判断是 `False`,不要执行 `if`的内容,去把 `else`执行了, `if`中文意思为 `如果`,`else`中文意思为 `否则`: ```python price = 1 if price > 20: print("价格为%d元" %(price)) print('贵了') else: #这里同样注意不要漏掉冒号 print("价格为%d元" %(price)) print('便宜了') ``` 还可以用 `elif`做更细致的判断,`elif`是 `else if`的缩写,可以有多个 `elif`: ```python price = 20 if price > 20: print("价格为%d元" %(price)) print('贵了') elif price == 20: print("价格为%d元" %(price)) print('刚刚好') else: #这里同样注意不要漏掉冒号 print("价格为%d元" %(price)) print('便宜了') ``` `if`语句的完整形式: ```python if <条件判断1>: <执行1> elif <条件判断2>: <执行2> elif <条件判断3>: <执行3> else: <执行4> ``` `if`语句执行有个特点,它是从上往下判断,如果在某个判断上是 `True`,把该判断对应的语句执行后,就忽略掉剩下的 `elif`和 `else`。 `if`判断条件还可以简写,比如写: ```python x = 1 if x: print('True') ``` 只要 `x`是非零数值、非空字符串、非空list等,就判断为True,否则为False。 ## 循环 要计算1+2+3,我们可以直接写表达式: ```````````````` >>> 1 + 2 + 3 6 ```````````````` 要计算1+2+3+...+10,勉强也能写出来。 但是,要计算1+2+3+...+10000,直接写表达式就不可能了。 为了让计算机能计算成千上万次的重复运算,我们就需要循环语句。 #### for循环 Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来,看例子: ```python names = ['Michael', 'Bob', 'Tracy'] for name in names: print(name) ``` 执行这段代码,会依次打印 `names`的每一个元素: `````````````````` Michael Bob Tracy `````````````````` 所以 `for x in ...`循环就是把每个元素代入变量x,然后执行缩进块的语句。 再比如我们想计算1-10的整数之和,可以用一个sum变量做累加: ```python sum = 0 for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: sum = sum + x print(sum) ``` 如果要计算1-100的整数之和,从1写到100有点困难,幸好Python提供一个 `range()`函数,可以生成一个整数序列。 `range(101)`就可以生成0-100的整数序列,计算如下: ```python sum = 0 for x in range(101): #因为是从0开始生成所以生成到100时是第101个数 sum = sum + x print(sum) ``` #### while循环 只要条件满足,就不断循环,条件不满足时退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现: ```python sum = 0 n = 99 while n > 0: sum = sum + n n = n - 2 print(sum) ``` 在循环内部变量 `n`不断自减,直到变为 `-1`时,不再满足while条件,循环退出。 **练习** 请利用循环依次对list中的每个名字打印出Hello, xxx!: `````````````````````````````````````````` name = ['zeruns', 'Bart', 'Lisa', 'Adam'] `````````````````````````````````````````` **答案** <div class="hideContent">此处内容需要评论回复后(审核通过)方可阅读。</div> #### break 在循环中,`break`语句可以提前退出循环。例如,本来要循环打印1~100的数字: ```python n = 1 while n <= 100: print(n) n = n + 1 print('END') ``` 上面的代码可以打印出1~100。 如果要提前结束循环,可以用 `break`语句: ```python n = 1 while n <= 100: if n > 10: # 当n = 11时,条件满足,执行break语句 break # break语句会结束当前循环 print(n) n = n + 1 print('END') ``` 执行上面的代码可以看到,打印出1~10后,紧接着打印 `END`,程序结束。 可见 `break`的作用是提前结束循环。 #### continue 在循环过程中,也可以通过 `continue`语句,跳过当前的这次循环,直接开始下一次循环。 ```python n = 0 while n < 10: n = n + 1 print(n) ``` 上面的程序可以打印出1~10。但是,如果我们想只打印奇数,可以用 `continue`语句跳过某些循环: ```python n = 0 while n < 10: n = n + 1 if n % 2 == 0: # 如果n是偶数,执行continue语句 continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行 print(n) ``` 执行上面的代码可以看到,打印的不再是1~10,而是1,3,5,7,9。 可见 `continue`的作用是提前结束本轮循环,并直接开始下一轮循环。 ## 小结 循环是让计算机做重复任务的有效的方法。 `break`语句可以在循环过程中直接退出循环,而 `continue`语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合 `if`语句使用。 要特别注意,不要滥用 `break`和 `continue`语句。`break`和 `continue`会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到 `break`和 `continue`语句,上面的两个例子,都可以通过改写循环条件或者修改循环逻辑,去掉 `break`和 `continue`语句。 有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以用Ctrl+C退出程序,或者强制结束Python进程。 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://blog.zeruns.tech/archives/120.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://blog.zeruns.tech/usr/uploads/2019/12/2939985503.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">用Python打印九九乘法表—for,while循环和递归方式</p> <div class="inster-summary text-muted"> for循环for i in range(1,10): for j in range(i): ... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 最后修改:2020 年 08 月 13 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 3 如果您觉得我的文章有帮助,请随意赞赏,赞赏有助于激发博主的热情,感谢!
3 条评论
(๑•̀ㅂ•́)و✧
OωO
博主讲得很好,通俗易懂( ͡ಠ ʖ̯ ͡ಠ)