07.报数游戏:7的倍数或含7的数跳过,趣说python循环里的break和continue
- 游戏资讯
- 发布时间:2024-11-09 10:20:13
报数游戏是集体活动时经常会玩的一个游戏。假设有100个人,从1开始报数,碰到7的倍数跳过,如果没有跳过就惩罚他表演一个节目。首先,如果只是100个人报数,我们用 print(i) 表示把数字 i 报数出来。那么程序如下,程序执行,会在电脑屏幕上依次打印1,2,3,4,5,6,7,8……100。当我们制定游戏规则是逢7的倍数跳过后,如果某个人不小心报出了7的倍数,循环就应该提前结束。假设这100个人都是傻瓜,只会从1开始往后报数,那么当报到7的时候,游戏就结束了,就如下面的程序。在python里,我们使用 break 来提前结束整个循环。注意并体会 break 的缩进位置。类似的例子还有判断一个数是不是素数(质数)。比如,判断 n = 61199293 是不是素数。循环的范围是[2,n),但如果我们在循环过程中找到一个数,可以整除 n,那么 n 就已经不是素数了,后面的循环就没有必要继续下去了。所以,我们使用 break 提前结束了循环。注意并体会 break 的缩进位置,可以把 break 换个位置,看看结果有什么不同。
如果这100个人都是聪明人,都不会犯错。碰到7的倍数都会跳过。程序就变成了下面这样。程序执行,电脑屏幕上会打印1,2,3,4,5,6,8……100。7的倍数都不会被打印。原因在于,变量 i 从1开始循环,每次都会先判断 i % 7 是否等于0。如果 i % 7 不等于0,才会执行 print(i),把 i 打印出来。如果 i % 7 等于0,执行 continue,就提前跳出了本次循环,不会再执行 print(i)。在 python 里,我们使用 continue 来提前跳出本次循环。不仅要注意并体会 break 的缩进位置。还要体会 print(i) 的位置,可以把 print(i) 放在 if 语句上面,看看是什么效果。
现实中,报数游戏的规则往往要更复杂一些,比如7的倍数或者含7的数都要跳过。在前面的程序里,if 后面的判断条件,我们使用的是比较运算: i % 7 == 0。只能表达 7的倍数这一个规则,所以,我们要介绍一种新的运算:逻辑运算。python 里的逻辑运算符一共只有3个:and,or,not。它们的含义如下表格。所以,我们可以使用 or 把 i % 7 ==0 是7的倍数,i % 10 == 0 个位是7,int(i / 10) % 10 == 7 十位是7 这3个比较运算的结果连接起来。表示只要其中1个是 True,结果就是 True。
做一道练习题吧。一个正整数加上168之后是完全平方数,再加上168又是一个完全平方数。求这个数。注: 完全平方数的题目在奥数里颇为常见,不仅是小学奥数,初中、高中奥数也经常看到完全平方数的身影,有兴趣的话可自行搜索。