当前位置:首页>python>Python少儿编程-放羊趣事

Python少儿编程-放羊趣事

  • 2026-09-02 19:29:56
Python少儿编程-放羊趣事

想象比知识更重要

编程能让想象变成现实

~Python少儿编程课堂来啦~

小朋友们,古人也会做“数学应用题”哦!而且还把题目写成了朗朗上口的词,超有创意~ 今天我们就来解锁明代数学家程大位《算法统宗》里的一道古算题,还用Python的“枚举法”,轻松算出甲乙两人各有多少只羊!

古人的苦恼

先来看这道超有韵味的古算题,用“西江月”词牌写成,读起来还朗朗上口:
甲乙隔沟放牧,二人暗里参详。

甲说得乙九个羊,多你一倍之上。

乙说得甲九只,两家之数相当。

两边闲坐恼心肠,画地算了半响。

哈哈,是不是有点绕?别急,翻译官上线,变成小朋友能看懂的大白话:

甲和乙隔着山沟放羊,俩人都在偷偷猜对方有多少只羊。甲说:“要是我能得到你9只羊,我的羊数就比你多一倍!”乙说:“要是我能得到你9只羊,咱们俩的羊数就一样多啦!”俩人坐在沟两边,愁得抓耳挠腮,在地上算半天,才算出答案~
小朋友们,你们能不能比古人更快算出答案?跟着Python,一起解锁“枚举法”这个解题神器吧!

拆拆拆,把难题变简单

要想用编程解题,第一步就是把“大难题”拆成“小积木”,一步步来,再难的题也能搞定!

01

任务分解:3步搞定放羊难题

第一步:找出题目里的“隐藏密码”(等量关系),把甲、乙的羊数和对话对应起来;

第二步:学会“枚举法”,像“排查嫌疑犯”一样,一个个试出甲、乙可能的羊数;

第三步:用Python写程序,让电脑自动枚举、验证,快速找到正确答案。

02

枚举法——笨办法,却超好用

小朋友们,你们有没有试过“猜数字”游戏?比如猜1-100之间的数,一个个试,直到猜中——这就是枚举法!枚举法就是:把所有可能的答案,一个个列出来,再一个个验证,符合条件的就是正确答案。它看似“笨笨的”,但思路简单、不容易出错,特别适合我们小朋友学习,电脑算得超快,再多答案也能秒验!结合这道题,我们先找“隐藏密码”(重点!):
  1. 设甲有x只羊,乙有y只羊;
  2. 乙说:“我得你9只,两家羊数相等” → 乙+9 = 甲-9 → y + 9 = x - 9(核心等式1);
  3. 甲说:“我得你9只,我的羊比你多一倍” → 甲+9 = 2×(乙-9) → x + 9 = 2×(y - 9)(核心等式2)。
我们只要枚举可能的x和y,满足这两个等式,就是正确答案啦

03

看清程序的“解题路线”

用简单的流程图,看看是怎么一步步枚举、找到答案的,就像看地图一样清晰~

小提醒:为什么x从30起?因为乙说“得甲9只就相等”,说明甲比乙多18只(x = y + 18),甲的羊数肯定不能太少,从30开始试,更快找到答案~

动手写代码,让电脑算答案

接下来就是最激动人心的环节!跟着注释写代码,电脑会自动枚举、验证,几秒钟就能算出甲乙各有多少只羊,比古人画地计算快多啦~:

# 少儿编程Python:用枚举法破解古算题(放羊难题)print("🐑 古算题解题程序启动!正在寻找甲乙的羊数...")# 枚举甲的羊数x(根据分析,甲比乙多18只,x至少30,最多设100即可,足够找到答案)for x inrange(30, 101):    # 根据乙的话,得出y = x - 18(乙得甲9只,两家相等 → y+9 = x-9 → y = x-18)    y = x - 18    # 验证甲的话:甲得乙9只,羊数是乙的2倍 → x+9 = 2*(y-9)    if x + 9 == 2 * (y - 9):        # 找到正确答案,打印结果        print(f"✅ 找到答案啦!")        print(f"甲有 {x} 只羊,乙有 {y} 只羊~")        # 找到答案后,退出循环,不用再枚举啦        breakprint("📝 验证一下:")print(f"甲得乙9只:{x+9} 只,乙剩 {y-9} 只,{x+9} 是 {y-9} 的2倍,符合甲的话!")print(f"乙得甲9只:{y+9} 只,甲剩 {x-9} 只,{y+9} 和 {x-9} 相等,符合乙的话!")

小朋友们,把这段代码复制到Python编辑器里,运行一下,看看电脑算出的答案是什么?是不是和你手动算的一样?

💡 运行结果揭秘:甲有63只羊,乙有45只羊!不信你验证一下:63+9=72,45-9=36,72是36的2倍;45+9=54,63-9=54,真的相等!

小拓展:枚举法的小妙用

小朋友们,枚举法不止能解这道古算题,生活中很多问题都能用它解决哦:

  • 猜数字游戏:电脑随机选一个数,你用枚举法一个个试,就能猜中;
  • 找因数:比如找100的所有因数,枚举1-100,能整除100的就是因数;
  • 简单密码破解:比如密码是1-1000之间的数,枚举所有可能,就能找到密码(不过可不能用来破解真密码哦~)。
今天我们不仅读懂了一道有趣的古算题,还学会了Python里超实用的“枚举法”,是不是收获满满?
编程就是这样,把复杂的问题拆解开,用简单的方法一步步尝试,就能轻松搞定!

(文末彩蛋:关注我,少儿编程不迷路,每天进步一点点!)

最新文章

随机文章