欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

Pyhton为什么这么厉害?无意中从一道奥数题发现Python真的爽翻了

发布时间:2024/9/30 python 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Pyhton为什么这么厉害?无意中从一道奥数题发现Python真的爽翻了 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

在小编我刚接触Python的时候,心里就在想:Python的代码写这么少,就可以实现一个小功能了!确实也有点方便啊!或许出于程序员,我很想将每一门语言都学一遍,不管学好学差,至少我都了解,心里有个底,总是好的!

之前在一个平台有看到这么一张图片,引发了我的兴趣:

这个题目有点意思!不过对于做这题的小朋友来说,确实难度有点大!

这道题本身不难,只需要简单的推理就可以做出来:

3位数+3位数等于4位数,那么“要”只能是1。
同上,“好”+“要”>=10,因此“好”只能是9,“做”是0。
个位是两个“好”相加,于是“事”是8。

所以答案是,“要做好事”=1098。不过今天的重点并不在这里,因为我这张图片下方贴了一段代码,大概是有哪位家长无聊写的:

这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、 爬虫、数据分析、数据可视化、机器学习等。 小编这里推荐加小编的python学习群:895,817, 687


程序员现在已经很普遍了,随便一个什么事情,或许程序员都可以以代码的形式解答了!

不过仔细看看这段代码貌似是Arduino的C吧!

Anyway,程序的思路很简单,用穷举法把所有的数字都试一遍,找出满足条件(加法等式)的组合。作为一个Python粉,我觉得这样的代码实在缺乏美感,特别是套了4层循环,而且还用了一个特别low的判断来检查4个数字是不是相互重复(根据题目,每个汉字代表一个不同的数字,所以相互之间不应该重复)。这道题目只是4位数,要是位数更多的话,这么写真的要累死啦。

那么用Python写这样一个程序,能不能简洁一点呢?我们换个思路,4个汉字,每个汉字的取值范围都是0-9,且相互之间不重复,这相当于从包含10个元素的集合[0,9]中任取4个元素的排列(permutation),即P(10,4)。学过排列组合的话我们就可以计算出P(10,4) = 10x9x8x7 = 5040,也就是说一共有5040种不同的排列方式。

Python里面有一个神器叫迭代器(iterator),而且Python还自带了itertools标准库,用来产生各种各样的迭代器,其中就包括排列组合迭代器。这样一来事情就简单了,我们先产生一个排列迭代器,然后再用for迭代它,就可以找出满足条件的排列了,不需要写4层循环,也不需要检查4个数字是否相互重复:

只需要5行代码!而且其实最后一行break没有也无所谓,上面那段C的代码也没有做循环跳出嘛。运行一下看结果:

YAO:1, ZUO:0, HAO:9, SHI:8

完美!

总结

以上是生活随笔为你收集整理的Pyhton为什么这么厉害?无意中从一道奥数题发现Python真的爽翻了的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。