热门回答:
继“你看过/写过哪些有意思的代码”后。小慕又收到关于Python的战帖。这怎么能怂?快快接招吧!
发功之前友情提示:部分案例适用于Python3。在Windows下面可以用Python命令代替。具体请根据自己的修行选择。
一、江湖纯情版
1、 爱心
先来个高赞爱心的中英文结合版:
print'\n'.join([''.join([(u'ILoveChina爱'[(x-y)%11]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)])
如果换成纯汉字的版本。则可能会出现较明显的变形。所以为保证妹子不理解成“变心”。建议使用中英文结合的方式。你get到了吗?
2、 美丽的螺旋
或许你觉得心型图案太俗套。那么试试下面这个美丽的螺旋?在python编译器中输入下面的代码。接下来让我们来见证奇迹吧!
exec \"\"\"\nfrom turtle import *\nfor i in range(500): \n forward(i)\n left(91)\n\"\"\"
二、娱乐纵情版
1、猜数字
无聊的时候。猜猜数字也是很有乐趣的嘛。1~99范围内的整数。如果猜对了会给你一个“Y”。如果猜高了会给出一个“H”;猜低了。你会得到一个“L”(Y、H、L可以根据你希望它给出的提示进行更换)。你有六次机会猜出正确的结果哦!
python3 -c \"import random;n=random.randint(1,99);[(lambda a:print('Y' if a==n else 'H' if a>n else 'L'))(int(input())) for i in range(6)]”
2、老虎机
猜数字不过瘾?不如再来试试迷你老虎机。用随机的unicode字符打样出来。完美模拟了老虎机的效果!
python3 -c \"import random;p=lambda:random.choice('7');[print('|'.join([p(),p(),p()]),end='\r') for i in range(8**5)]”
3、 一行代码帮你选彩票号码
当然。还有更刺激的彩票摇号。不过与其将命运交给彩票站的投注机器。不如自己写一行代码。喏。彩票选号代码了解一下:
python -c \"from random import sample; print 'Lotto numbers: %s' % sample(range(1, 50), 6)\"
友情提示:彩票有风险。出手须谨慎。至于这行代码给出的结果是否能够中奖。那就只能看你的运气啦!
三、学府深造版
1、一行代码实现GUI用户界面
python -c \"from Tkinter import *;root = Tk();w = Label(root, text='你好!慕课网!');w.pack();root.mainloop()”
一行代码实现GUI用户界面有木有!
2、一行代码启动一个http服务器
一行代码可以启动一个HTTP服务器。这一点真的非常好用。所以尽管有其他答主提到过。还是忍不住要再分享一下!
python3 -m http.server 8888
在本地。输入网址 localhost:8888即可访问。默认会列出你的本地目录:
3、Python的哲学
每次读到Python之禅的时候。总是情不自禁地陷入优美的意境不能自拔。恨不能随时随地都能拿来拜读?下面这行代码能够满足你的愿望:
python -c \"import this\"
回车!然后。你便会发现你的屏幕上已然出现了心心念念的Python的ZEN(禅意)。神不神奇?惊不惊喜?
4、 简易计算器
print(eval(input()))
这个单行代码只用了默认引入的函数。其意义也是单纯而透明:读入一个python表达式并求值。将其结果输出到屏幕。当个简单计算器绰绰有余。
5、今天距离明年元旦还有多少天?
不会跟妹子搭讪?教你一招搭讪大法:故作神秘地问她知不知道还有多少天就是明年的元旦了。趁妹子一脸懵掉你打开编译器。潇洒地敲出以下这行代码。然后看着结果告诉她:你看。距离明年元旦还有XX天!
python -c \"\"\"import datetime;today = datetime.date.today();someday = datetime.date(2019, 1, 1);diff = someday - today;print str(diff.days)+' days' “\"\"
妹子接下来可能会有一波感叹:哎呀。还有XX天了? 日子过得真快啊!
然后你转手将代码一改。把元旦的时间改为你和妹子认识的时间。然后跟妹子说:你看。我们都认识这么久了。还没一起吃过饭呢。不如今晚下班请你吃个饭?
接下来。一定要记得按时下班啊!
其实。就单行而言。Python并不会比其它的多范式语言更强。实际上由于lambda表现能力弱。导致Python本身要更弱一些。
但是。存在lambda就存在无限可能。Python中的import语句是可以通过调用__builtin__模块中的__import__来代替的。更有意思的是。__builtin__模块内的所有内容均是自动import的。
四、附加武功秘籍
1、换脸术
这个10进制转换16进制的单行代码就是lambda无限可能的有力论证:
print(\"#\"+''.join([\"{:0>2}\".format(hex(int(a))[2:])for a in __import__('sys').argv[1:]]))
2、星罗阵
这样的画图。只是简单的用到了调用时传递参数而已。
[print('\n'.join(\" \"*abs(c)+\"* \"*(a-abs(c))for c in range(-a+1,a))) for a in[int(__import__('sys').argv[1])]]
3、操控术
如果调用更复杂的功能呢?例如用Flask来个Hello world?
[y[0].run() for y in [(x, x.route('/')(lambda :'Hello, world!')) for x in [__import__('flask').Flask(__name__)]]]
使用列表生成的实现看起来可能不太优雅。但并不会影响效果。
4、凌波微步
或者你还想看看带窗口的心形曲线?不要看那个黑黑的ASCII颜艺的话可以这样(需要numpy和matplotlib)
[plt.show() for _, __, ___, plt in [(plt.plot(x, y1, color='r'), plt.plot(x, y2, color='r'), np, plt) for x, y1, y2, np, plt in [(x, 0.618*np.abs(x) - 0.8* np.sqrt(64-x**2), 0.618*np.abs(x) + 0.8* np.sqrt(64-x**2), np, plt) for x, np, plt in [(np.linspace(-8, 8, 1024), np, plt) for np, plt in [(__import__('numpy'), __import__('pylab'))]]]]]
5、吸星大法
如果你是深度学习炼丹师。那不妨来个一行预测?
[print(decode(model.predict(x))) for model, x, decode in [(ResNet50(weights='imagenet'), preprocess_input(np.expand_dims(image.img_to_array(image.load_img('elephant.jpg', target_size=(224, 224))), axis=0)), decode) for ResNet50, image, preprocess_input, np, decode in [(kav.applications.resnet50.ResNet50, kp.preprocessing.image, kav.applications.resnet50.preprocess_input, np, kav.applications.resnet50.decode_predictions) for kav, kp, np in [(__import__('keras.applications.resnet50'), __import__('keras.preprocessing.image'), __import__('numpy'))]]]]
按照这样的方法。几乎所有的代码最终都能压到同一行里;配合Python各种强大的包。写出个一行人脸识别、一行机器学习、一行网页爬虫等都不会有什么问题。
综上。“一行代码”可供修炼的“功夫”多种多样。虽然有趣。但并没有太多的实际意义。在实际工作中没有必要强行把所有的代码都压缩到一行中实现。当然。如果是为了向妹子炫技的话。那么请尽管展示你的才华!
程序员学习交流请添加慕课网官方客服微信:mukewang666回复暗号“前端面试”可进前端交流群回复暗号“Java”可进Java交流群回复暗号“专栏”可进程序员交流群
推荐阅读:
计算机专业同学如何避免自己成为一名低级码农?https://www.wukong.com/question/6546119457276690691/
在做程序员的道路上。你掌握了什么概念或技术使你感觉自我提升突飞猛进?https://www.wukong.com/question/6517473209128845575/
大公司和小公司的程序员差别在哪?https://www.wukong.com/question/6514834007652303108/
程序员面试的时候。大家都中过什么套路?https://www.wukong.com/question/6481413885956981005/
你见过有哪些搞笑的代码?https://www.wukong.com/question/6532626072771494147/
程序员很闷骚么?https://www.wukong.com/question/6492183419819131150/
其他观点:
不生产代码。我只是代码的搬运工。
Python的列表推倒器是美好的语法糖。所以使用列表推倒器简化了for循环的嵌套。更简洁。许多黑魔法都是用这个方法。
Python可用于运维。因此在Linux系统管理中。命令行上一行就搞定了。下面给的例子中就有。
以下代码在 windows amd64 python 3.7.4测试。
为了使结果看上去更优雅。我们提前使用 from pprint import pprint。使用pprint打印数据。
from pprint import pprint
所有代码在jupyter notebook内运行。
pprint(zip(('Byte', 'KByte', 'MByte', 'GByte', 'TByte'), (1 << 10*i for i in range(5))));
# 列表所有元素乘以2
pprint(list(map(lambda x: x * 2, range(1,11))))
# 列表所有元素之和
pprint(sum(range(1,1001)))
# 判断一些词是否在字符串内
其他观点:
有一定准备工作之后。一行代码的乐趣会更多
先看最终效果
获取数据
下面的命令可以从CoinRanking抓取所有虚拟货币的列表:
整理列表
显然数据的内容看得很不清楚。我们可以把数据的部分转换成DataFrame:
列排序
可以看到现在是按照字母表顺序排列。而不是按照数据本身的顺序排列。看得比较费力。如果我们想让列的顺序保持和原始数据一致。可以:
抓取更多数据
由于API限制。网站一次只能抓取50条数据。如果想抓取前150个。可以分3次抓取:
统计分析
拿到了数据。我们想看看数据之间的关系。比如过去的变化率和市值的关系:
统计分析
虚拟货币存在大量人为控盘的情况。我们首选要把变化太大的去掉(涨跌超过100%的)。另一方面。市值一般都要取对数才好进行比较。
历史数据
我们还可以看排在前10的虚拟货币最近一段时间的价格走势:
历史数据2
由于数据的尺度相差甚远。我们还可以把数据起始点统一转换成100:
所有import在这里:
- 想开个店,开什么好呢?资金不多,刚刚创业。谢谢?
- 有什么行业适用于初创业?
- 刚入社会的人想开店,最好开一家什么店?
- 我是一个创业小白,想要开一家店铺,大家有什么好的推荐吗?
- 刚创业,投资新项目有什么选择?
以上就是由互联网推广工程师 网创网 整理编辑的,如果觉得有帮助欢迎收藏转发~
本文地址:https://www.wangchuang8.com/216351.html,转载请说明来源于:网创推广网
声明:本站部分文章来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系进行处理。分享目的仅供大家学习与参考,不代表本站立场。
评论(2)
代码,数据,妹子,程序员,列表,彩票,暗号,元旦,来个,老虎机
没想到大家都对一行Python,你可以做什么?感兴趣,不过这这篇解答确实也是太好了
继“你看过/写过哪些有意思的代码”后。小慕又收到关于Python的战帖。这怎么能怂?快快接招吧!发功之前友情提示:部分案