本帖最后由 zhang1497 于 2020-8-24 22:29 编辑
前言
因为工作的关系,长期教小学数学奥数,最近接触到python,学到了while;for 语句这里,于是就有了这个想法:用python解奥数题
1. 订立制作目标 2.制作所需函数打印题目 → print函数
满足的条件 →while循环语句 3. 开始制作第一步:打印题目
[Python] 纯文本查看 复制代码 print("甲、乙、丙三数的和是78,甲数比乙数的2倍多4," # 老样子题目太长用“”换行
"乙数比丙数的3倍少2。求这三个数。\n") # \n和 下面答题空一行
第二步:制作while循环
[Python] 纯文本查看 复制代码 sum = 0 # 起始值
while True:
if sum * 3 - 2 + (sum * 3 - 2) * 2 + 4 + sum == 78:
print("答:甲是", b, "乙是", a, "丙是", sum)
break # 循环结束
第三步:补充未定义的a和b
[Python] 纯文本查看 复制代码 print("甲、乙、丙三数的和是78,甲数比乙数的2倍多4," # 老样子题目太长用“”换行
"乙数比丙数的3倍少2。求这三个数。\n") # \n和 下面答题空一行
sum = 0 # 起始值
while True:
if sum * 3 - 2 + (sum * 3 - 2) * 2 + 4 + sum == 78:
print("答:甲是", b, "乙是", a, "丙是", sum)
break # 循环结束
sum += 1 # sum +=1 写在后面美观
a = sum * 3 - 2 # a和b需要在循环之后被定义,
b = (sum*3-2)*2+4 #在while循环结束后,定义之前print内a和b的值
4. 第N次运行运行截图:
非常成功,没有报错
5.我的第一次错误示范
[Python] 纯文本查看 复制代码 第一次编写代码(错误示范)
sum = 0
a = sum*3-2 代码执行自上而下
b = (sum*3-2)*2+4 那么a和b就早已赋值了
while True:
if a + b + sum == 78:
print("甲是",b,"乙是",a,"丙是",sum) 输出0 -2 78 并非答案
break
sum += 1
我的第二次错误示范
[Python] 纯文本查看 复制代码 sum = 0
while True:
a = sum*3-2 #提示a和b未被定义
b = (sum*3-2)*2+4 #说明a和b需要在循环之前被定义,或者循环之后被定义。
if a + b + sum == 78: #根据第一次错误示范,a和b应该是在循环之后被定义。
print("甲是",b,"乙是",a,"丙是",sum)
break
sum += 1 #循环+1 直到找到符合条件的答案。
这样应该能够对while进一步加深应用了,这里非常感谢吾友:ukyodz 吾友:wuyangteam对我的指导,我对第三行的解释代码不太满意,还能再简写吗?
|