Python 循环与基础算法学习笔记

一、前言

小朋友们,今天咱们要一起学习 Python 里超有用的循环知识,还有用循环解决一些有趣的数学问题,像求阶乘、找水仙花数 。跟着步骤来,你会发现编程像玩游戏闯关一样好玩!

二、认识 for 循环(以求阶乘为例)

(一)什么是阶乘

小朋友们,阶乘就是从 1 开始连续乘到一个数。比如 4 的阶乘(写成 4! ),就是 1×2×3×4 = 24 ;5 的阶乘(5! )就是 1×2×3×4×5 ,这样一步步相乘得到结果 。

(二)用 for 循环求阶乘代码及解释

# 第一步:获取用户输入的正整数n,input()是获取输入,int()把输入转成整数
n = int(input())  
# 第二步:定义一个变量cnt,用来存阶乘的结果,一开始是1,因为乘法从1开始乘呀
cnt = 1  
# 第三步:for循环来帮忙!range(1, n + 1)会生成从1到n的一系列数字(包括1,不包括n+1 )
for i in range(1, n + 1):  
    # 每次循环,把cnt和当前的i相乘,更新cnt的值,这样就实现连续相乘啦
    cnt = cnt * i  
# 第四步:最后把算好的阶乘结果打印出来,让大家看到
print(cnt)  

比如输入 4 ,循环会依次让 i 是 1、2、3、4 。第一次循环 cnt = 1×1 = 1 ,第二次 cnt = 1×2 = 2 ,第三次 cnt = 2×3 = 6 ,第四次 cnt = 6×4 = 24 ,最后打印 24 ,就是 4 的阶乘啦 。

三、认识水仙花数与循环应用

(一)什么是水仙花数

水仙花数是三位数,它的神奇之处在于:这个数等于它自己每个数位上数字的立方和 。比如 153 ,百位是 1 ,十位是 5 ,个位是 3 ,1³ + 5³ + 3³ = 1 + 125 + 27 = 153 ,所以 153 就是水仙花数 。

(二)找水仙花数的代码及解释

# 第一步:用for循环遍历所有三位数,range(100, 1000)就是从100到999的数字
for i in range(100, 1000):  
    # 第二步:获取个位数字,用取余%,比如153%10就得到3
    ge = i % 10  
    # 第三步:获取十位数字,先//10把百位去掉,再%10,153//10是15,15%10就是5
    shi = i // 10 % 10  
    # 第四步:获取百位数字,//100就可以啦,153//100就是1
    bai = i // 100 % 10  
    # 第五步:判断这个数是否等于各个数位数字的立方和,**是求立方的意思,比如ge**3就是ge的立方
    if ge**3 + shi**3 + bai**3 == i:  
        # 第六步:如果是水仙花数,就打印出来,end=" "让打印的数之间用空格隔开
        print(i, end=" ")  

运行这段代码,就会找出 153、370、371、407 这些水仙花数啦 ,就像寻宝一样把它们找出来!

四、满足条件的数累加(拓展练习)

(一)题目要求

编程求正整数 m 和 n 之间(包括 m 和 n )能被 17 整除的数累加的结果,其中 0 < m < n < 1000 。比如输入 50 和 85 ,就要把 51(51÷17 = 3 能整除 )、68(68÷17 = 4 )、85(85÷17 = 5 )这些数加起来,结果是 204 。

(二)代码及解释

# 第一步:获取输入的两个数m和n,split()把输入按空格分开,map(int,...)转成整数,再用list存起来
m, n = list(map(int, input().split()))  
# 第二步:定义cnt存累加结果,一开始是0
cnt = 0  
# 第三步:for循环遍历从m到n的所有数,range(m, n + 1)包含m和n
for i in range(m, n + 1):  
    # 第四步:判断是否能被17整除,也就是取余为0
    if i % 17 == 0:  
        # 第五步:能整除就加到cnt里
        cnt += i  
# 第六步:打印累加结果
print(cnt)  

五、总结

小朋友们,今天咱们学会啦:

  1. 用 for 循环求阶乘,就是让数字一个一个相乘 。
  2. 找出水仙花数,通过拆分三位数的各个数位,再看是否满足立方和的条件 。
  3. 还做了满足条件的数累加,判断能不能被 17 整除然后相加 。 这些都是用循环来解决问题,循环就像一个小机器人,按照咱们设定的规则重复做事,能帮咱们解决好多有趣的数学问题呢!多练习练习,你会越来越厉害哟,下次咱们再一起探索更多编程好玩的地方!

1 条评论

  • @ 2025-7-12 22:08:53

    Python循环魔法:用代码画出图形、算出乘法表

    亲爱的小朋友们,今天我们要学习Python里超厉害的“循环”魔法!就像玩积木一样,用简单的代码块重复搭建,就能画出漂亮的图形,还能算出九九乘法表哦。跟着我一步步来,你会发现编程比玩游戏还有趣!

    一、认识循环:让电脑帮你重复做事

    想象一下,如果你想在纸上画5行星星,每行8个,是不是要画40个星星?手都会酸吧!但用循环,电脑一秒就能搞定。

    循环就像让电脑当“小机器人”,按我们的命令重复做事。Python里有两种常用循环:while循环和for循环。

    二、用while循环画图形:从矩形到直角三角形

    (一)画矩形:整整齐齐的星星方阵

    先看一个简单的例子:用while循环画一个5行8列的矩形星星阵。

    # 画5行8列的矩形星星
    rows = 1  # 定义变量rows,表示当前行数,从1开始
    while rows <= 5:  # 当行数小于等于5时,继续循环(总共画5行)
        cols = 1  # 定义变量cols,表示当前列数,每行都从1开始
        while cols <= 8:  # 当列数小于等于8时,继续循环(每行画8个星星)
            print("*", end="")  # 打印一个星星,end=""表示不换行,让星星挨在一起
            cols = cols + 1  # 列数加1,准备画下一个星星
        print()  # 一行星星画完后,换行
        rows = rows + 1  # 行数加1,准备画下一行
    

    运行结果

    ********
    ********
    ********
    ********
    ********
    

    小朋友提问:为什么要用两个while
    因为画图形需要“行”和“列”两个方向呀!外面的while管行数(从上到下),里面的while管每行的星星数(从左到右),这就是“循环嵌套”,像俄罗斯套娃一样。

    (二)画直角三角形:星星越来越多

    如果想画一个每行星星数等于行数的直角三角形(第1行1个,第2行2个……第4行4个),只要改一下里面循环的条件就行啦。

    # 画4行直角三角形星星
    rows = 1  # 从第1行开始
    while rows <= 4:  # 总共画4行
        cols = 1  # 每行从第1列开始
        # 关键:让列数小于等于当前行数(第1行1列,第2行2列……)
        while cols <= rows:  
            print("*", end="")  # 打印星星,不换行
            cols = cols + 1  # 列数加1
        print()  # 换行
        rows = rows + 1  # 行数加1
    

    运行结果

    *
    **
    ***
    ****
    

    小技巧:如果想画8行的三角形,只要把rows <= 4改成rows <= 8就行啦,试试吧!

    三、用for循环画图形:更简单的重复命令

    for循环比while循环更简单,特别适合“从某个数到某个数”的重复。比如用for循环画直角三角形,代码会短很多哦。

    (一)for循环的好帮手:range()

    range(a, b)就像一个“数字生成器”,能生成从a开始(包括a)到b结束(不包括b)的所有数字。比如range(1, 5)会生成1、2、3、4。

    # 用for循环打印1到4的数字
    for i in range(1, 5):
        print(i)  # 会依次打印1、2、3、4
    

    (二)用for循环画直角三角形

    for循环嵌套,画8行直角三角形更简单:

    # 用for循环画8行直角三角形
    for rows in range(1, 9):  # rows从1到8(因为range(1,9)不包括9)
        for cols in range(1, rows + 1):  # cols从1到当前行数(比如rows=3时,cols=1,2,3)
            print("*", end="")  # 打印星星,不换行
        print()  # 换行
    

    运行结果

    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    

    是不是比while循环简洁多啦?for循环特别适合知道“要重复几次”的情况。

    四、用循环做算术:九九乘法表

    学会了循环画图形,我们再来挑战一个实用技能——用循环算九九乘法表!

    (一)先看懂乘法表的规律

    九九乘法表有9行,第1行1个算式,第2行2个算式……第9行9个算式,和直角三角形的规律很像!比如:

    • 第1行:1×1=1
    • 第2行:1×2=2,2×2=4
    • 第3行:1×3=3,2×3=6,3×3=9

    (二)用while循环写九九乘法表

    # 用while循环打印九九乘法表
    rows = 1  # 行数从1到9
    while rows <= 9:
        cols = 1  # 每行的算式从1×rows开始
        while cols <= rows:  # 第rows行有rows个算式
            # 打印“cols*rows=结果”,%d是数字占位符,%2d表示结果占2个位置,让对齐更整齐
            print("%d*%d=%2d" % (cols, rows, cols * rows), end=" ")
            cols = cols + 1  # 下一个乘数
        print()  # 换行
        rows = rows + 1  # 下一行
    

    运行结果

    1*1= 1 
    1*2= 2  2*2= 4 
    1*3= 3  2*3= 6  3*3= 9 
    1*4= 4  2*4= 8  3*4= 12  4*4= 16 
    ...(以此类推直到第9行)
    

    (三)用for循环简化九九乘法表

    for循环嵌套,代码更短,还能加\t(制表符)让乘法表对齐更整齐:

    # 用for循环打印对齐的九九乘法表
    for rows in range(1, 10):  # 行数1到9
        for cols in range(1, rows + 1):  # 每行的算式数=行数
            # end="\t"表示用制表符分隔,让算式对齐,像表格一样整齐
            print("%d*%d=%2d" % (cols, rows, cols * rows), end="\t")
        print()  # 换行
    

    运行结果(对齐更美观):

    1*1= 1 	
    1*2= 2 	2*2= 4 	
    1*3= 3 	2*3= 6 	3*3= 9 	
    ...(以此类推直到第9行)
    

    小秘密%2d中的“2”是为了让结果占2个位置(比如“1”显示为“ 1”,“12”显示为“12”),\t就像按了一下Tab键,让每列对齐,是不是很像课本上的乘法表?

    五、循环小练习:自己动手试试

    1. while循环画一个3行5列的矩形(每行5个星星)。
    2. for循环画一个5行的直角三角形(第5行5个星星)。
    3. 试着修改乘法表的代码,让它只显示前5行。

    提示:修改range()里的数字或者while循环的条件就行啦,大胆尝试吧!

    六、总结:循环是编程的“重复魔法”

    今天我们学会了:

    • while循环:适合“不知道要重复几次,直到满足条件为止”的情况(比如一直画到第5行)。
    • for循环:适合“知道要重复几次”的情况,搭配range()更方便(比如从1到9行)。
    • 循环嵌套:就像“大盒子套小盒子”,能画出图形、算出乘法表,是编程里超有用的技巧!

    下次遇到需要重复做的事,就想想循环吧,电脑会帮你轻松搞定!

    • 1