一、入门实战第一弹解答

入门实战第一弹问题回顾:

计算1,3,5…97,99所有数字的总和

解法1:while 循环语句

sum = 0
i = 1
while (i <= 100):
    sum = sum + i
    i = i + 2

print(sum)

详解:

首先初始化了两个变量 sum = 0,i = 1
sum 储存所有 i 的总和,i 表示当次循环加入 sum 中的数

while (i <= 100) 表示:该 while 循环语句的循环条件是 i <=100
sum = sum + i 表示:将当次循环中的 i 加入 sum 中
i = i + 2 表示:i 每次递增2

print(sum) 表示:将最后 sum 的值当作结果输出

解法2:for 循环语句

sum = 0
for i in range(1, 100, 2):
    sum = sum + i

print(sum)

详解:

for i in range(开始/左边界, 结束/右边界, 步长)

for 循环语句与 while 循环语句有异曲同工之处,使用 for 循环语句可以使语句更加简洁明了

在 for 循环语句中的一行代码:
for i in range(1, 100, 2):
可以代替 while 循环语句中的三行代码:
i = 1
while (i <= 100):
i = i + 2

可别小看了这两行代码的区别,在循环次数达到上万次时,for 循环语句通过底层代码的优化可以大大减少运行时间

解法3:def 函数递归

def getsum (i):
    if (i <= 1):
        return 1
    else:
        return i + getsum(i-2)

sum = getsum(99)
print(sum)

详解:

首先我们定义了一个递归函数 getsum(i) :
def getsum (i):
if (i <= 1):
return 1
else:
return i + getsum(i-2)

我们可以将 getsum(99) 带入到函数中来理解它的作用:

由代码可知,当传入参数 i > 1 时,返回值为 i + getsum(i-2),将会不断地调用函数自身
第一次调用函数:getsum(99)
第二次调用函数:99 + getsum(97)
第三次调用函数:99 + 97 + getsum(95)
第四次调用函数:99 + 97 + 95 + getsum(93)
第五次调用函数:99 + 97 + 95 + 93 + getsum(91)
………………
第五十次调用函数:99 + 97 + 95 + 93 + …… + getsum(1)

由代码可知,当传入参数 i <= 1 时,返回值为 1,不再继续调用函数
将 getsum(1) 用1代替后,就可以得出最终答案

二、入门实战第二弹

通过上一次实战的学习和实践,相信大家都对这三种方法有了深入的理解
接下来我们会通过一道类似的题目巩固这些知识点:

计算1至100之间所有质数的总和
postscript:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

拓展:判断10~20内所有数字是否是质数的方法:

for num in range(10,20):     # 迭代 10 到 20 之间的数字
    for i in range(2,num):   # 根据因子迭代
        if num%i == 0:       # 确定第一个因子
            j=num/i          # 计算第二个因子
            print ("%d 等于 %d * %d" % (num,i,j))
            break            # 跳出当前循环
    else:                    # 循环的 else 部分
        print (num, "是一个质数")

运行样例:

24 利用python计算3 用python计算1+3+5+7+...+99_循环语句


这里的 else 语句有更高级的用法,想深入了解的同学可以看 这里