python基础===一道小学奥数题的解法
2023-09-14 09:12:08 时间
今早在博客园和大家分享了一道昨晚微博中看到的小学奥数题,后来有朋友给出了答案。然后我尝试用python解答它。
原题是这样的:
数学题:好事好 + 要做好 = 要做好事,求 “好、事、做、要”的值分别是多少?
以下解题思路:
list1=[0,1,2,3,4,5,6,7,8,9]
for h in list1:
for s in list1:
for z in list1:
for y in list1:
if (h*100+s*10+h)+(y*100+z*10+h)==(y*1000+z*100+h*10+s):
print(h,s,y,z)
思路二:
def func(i):
# 可以把h(好),s(事),z(做),y(要)看作是0000-9999的千、百、十、个位数。
h, s, z, y = f'{i:04d}'
# 按照汉字的顺序重新排列变量
if int(f'{h}{s}{h}') + int(f'{y}{z}{h}') == int(f'{y}{z}{h}{s}'):
print(h, s, z, y)
#遍历0000-9999
for i in range(10000):
func(i)
f‘{i}’是把整数i转换成一个字符串,:04d是用0补齐四位。然后把这四位数分别赋值给h,s,z,y,这里用了一个解包的技巧,其他语言最少要写四行。
from itertools import product
print [(x, y, z, f) for (x, y, z, f) in product(*[range(10)] * 4) if (z * 100 + f * 10 + z) + (x * 100 + y * 10 + z) == (x * 1000 + y * 100 + z * 10 + f)]
思路三:
把问题看成三位数(101-989)加三位数等于四位数,然后通过位数分解这样只需要两重循环。
相关文章
- pycharm如何安装第三方库_python第三方库离线安装
- Python常用代码_python画图代码大全
- python环境搭建和pycharm的安装配置及汉化(零基础小白版)[通俗易懂]
- 13个Python GUI库
- 整理python办公自动化相关库2021.8.5
- 【说站】python事件循环如何使用?
- 【说站】python脚本文件的扩展名是什么
- 【说站】python zip_longest和zip的比较
- python抛出异常写法_零基础学 Python(32):如何抛出和捕获异常?「建议收藏」
- python unix时间戳_python24小时12小时转换
- 盘点一个Python列表元素0移动的基础题目
- Python基础-9 类
- (七)Python绘图基础:Matplotlib绘图
- python-Python与MongoDB数据库-MongoDB数据库的基本知识
- python通过PyGame绘制图像并保存为图片文件详解编程语言
- python入门(十):XML和JSON解析详解编程语言
- Python项目实战之猜数字游戏(含实现代码)
- 用 Python 入门数据科学
- 在Linux系统中使用Python编程语言(linux中python)
- Python开发Activex组件方法
- python璧??兼??浣??规???浜?/h1>