课时47:while练习_特定条件数字求和
摘要:本文围绕Python编程的几个基础练习展开讲解,涵盖求100以内所有奇数之和、100以内所有七的倍数之和及个数、1000以内的所有水仙花数,以及判断用户输入的任意数是否为质数等内容。详细阐述了每个练习的解题思路、代码实现步骤,并强调了代码编写过程中的注意事项。
1. 求100以内所有奇数之和
2. 求100以内所有七的倍数之和及个数
3. 求1000以内的所有水仙花数
4. 判断用户输入的任意数是否为质数
01、 求100以内所有奇数之和
接下来看这个练习,先看练习一和练习二。先创建新文件,保存为“code_07_练习点.py”。
先看第一个练习,把题粘过来,题目是求100以内所有奇数之和。做这种题别着急,一步一步来。就算到了工作中也一样,领导或者老板给新需求,得完成。这时候要做的头一件事,就是把大需求、大问题拆成小问题。
要是你头一回做这种题,求100以内所有奇数之和没思路?先把问题细化。比如让求100以内所有奇数之和?先获取100以内所有的数?这就简单了,写个循环执行100次就可以了。
初始化一个变量 `i = 0`,用 `while` 循环,条件是 `i < 100`,因为要循环100次。然后 `i += 1`,每次让 `i` 自增1。再 `print(i)`,现在 `i` 就是1到100的数。执行一下,看看效果,是不是 `i` 从1到100都有了。
现在有1到100的数了,新需求是求奇数之和。先不求奇数,先求1到100所有数的和。创建变量来保存结果,就叫 `result = 0`。要求1到100的和,就把这些数一个一个加到 `result` 里。在循环里写 result += i`,意思就是把每个 `i` 累加到 `result` 里。注意,`print(result)` 要写在循环外边,不然每次循环都会打印。保存代码一执行,结果是5050。
要求的是奇数之和,所以在加之前得判断 `i` 是不是奇数。判断方法是 `i % 2 != 0`,如果不能被2整除,那就是奇数。在 `while` 循环里套个 `if` 语句,`if i % 2 != 0`,如果是奇数,再对它进行累加。保存代码一执行,结果是2500。
注意点:一是保存奇数之和的变量 `result` 要创建在循环外边,要是写里边,每次循环都会初始化,结果就不对了;二是在循环内部要判断数是不是奇数,是奇数才累加。
其实还有另一种方式获取100以内所有奇数。还是 `i = 0`,`while i < 100`,之前是 `i += 1`,现在改成 `i += 2`,让 `i` 每隔两个数累加一次。但这样从0开始,结果是2、4、6、8……让 `i` 初始值为 -1,第一次加就变成1,再加变成3,不过到最后为101,并不准确。
所以改成 `i = 1`,结果是3、5、7……没1了。把 `i += 2` 放到 `print(i)` 后面,先打印再自增,结果就是1、3、5、7……一直到99。这样就不用判断了,直接在这个位置对 `i` 进行累加就可以。
用循环时,要调整循环次数或变量的值,需注意三个位置:初始化表达式、条件表达式、更新表达式。这三个如何写,对结果影响很大,做循环时需考虑清楚。
02、 求100以内所有七的倍数之和及个数
接下来求100以内所有七的倍数之和及个数。同理,求七的倍数之和,可以先求出100以内所有七的倍数。可以从七的最小倍数7开始,用 `while` 循环,条件是 `i < 100`,然后 `i += 7`,每次让 `i` 自增7,这样每次加起来都是七的倍数。执行代码,结果是7、14、21、28……
获取到所有七的倍数后,求它们的和。创建个变量 `result = 0`,在循环里 `result += i` 进行累加。最后打印 `result`,结果是735。
接下来求七的倍数的个数,其实就是循环执行的次数。创建个计数器,也就是一个变量 `count = 0`,循环执行一次,`count += 1`。最后打印 `总数量为:,count`,结果是14,也就是说100以内七的倍数有14个,它们的和是735。
03、 求1000以内的所有水仙花数
练习三是水仙花数,水仙花数是指一个 `n` 位数(`n >= 3`),它每个位上的数字的 `n` 次幂之和等于它本身。比如153,`1³ + 5³ + 3³ = 153`,那153就是水仙花数。
练习要求求出1000以内的所有水仙花数。第一步先获取1000以内的三位数,从100开始,用 `while` 循环,条件是 `i < 1000`,然后 `i += 1`。保存代码一执行,就能得到100到999的所有数。
要判断一个数是不是水仙花数,比如100,就得看 `1³ + 0³ + 0³` 等不等于100。难点是如何获取每一个位上的数字,获取到后一起求和,判断是否等于这个数本身就可以。
04、 判断用户输入的任意数是否为质数
练习四是获取用户输入的任意数,判断其是否为质数。质数是只能被1和它自身整除的数,1既不是质数也不是合数。像2、3、5、7、11、13、17、19这些都是质数,它们的因数只有1和它本身。比如6,除了1和6,还能被2和3整除,就不是质数。关键是怎么去判断这个数是否是质数,这道题稍微有点难度,思考一下如何处理。