0基础0元学习Python-第一天

前言

有一个朋友李雷,想学Python。为啥想学呢?可能是看了这个帖子你都用 Python 来做什么?

这个帖子非常的有意思,大家的回答超乎李雷的想象,你可能知道Python可以用来写爬虫,分析各种数据,比如京东上大家购买内衣的颜色分布等等,或者一些小工具,帮助我们自动化完成一些繁琐的工作。但是这只是冰山一角,帖子里的回答还有很多奇妙的作品:

  • 拿来了解女朋友情绪变化,顺道自动回复。

  • 分析B站宅舞主播如何跳舞。

  • 为女朋友和自己定制一款游戏。

  • 编程给图像随机填色呀。

  • 用来玩游戏。

这个帖子看戏来,李雷有一点心动的感觉。于是想自己也来试一试,希望也能用Python开发出有价值的东西。

在网上搜索学Python,课程非常多,完全不知道从那里开始,要做什么,是先花钱买个课跟着学,还是先买几本书来看一看呢?

李雷不想花钱消除焦虑,于是李雷想挑战一下0基础0元在网上学习Python。

李雷开始了这个挑战。

了解Python

李雷知道,想学Python只是一时的冲动,真学起来其实坚持不了3小时,所以还是先了解一下Python是什么,学了能做哪些事情,为这个冲动再加一些利益诱惑,说不定能坚持3天。

了解一个事物的本质,或者说在网上了解一个事物的本质,最好的方式和路径如下:官网、维基百科、权威社区、大牛博客、相关文档等等。

Python官网

于是李雷,首先打开了Python的官方网站https://www.python.org/。如图1

图1

官方网站对Python的定义是:让你更快的工作和更有效集成系统的程序语言。李雷知道更快的工作是什么意思,但是对更有效的集成系统不是很理解。接着看介绍,官方网站提供了初学者指南,源码下载,相关文档,甚至还有相关工作的招聘信息,真是业界良心网站。

在官方网站首页引起李雷注意的是,Use Python for。用Python做什么,上面列举了一些,后面的英文是框架的名字:

  1. 网站开发:Django、Pyramid
  2. 桌面程序开发:tkInter、PyGObject
  3. 科学和大数据:Scipy、Pandas
  4. 软件开发:Buildbot、Trac
  5. 系统管理:Ansible、Salt

李雷看到这里,产生了一个疑问,这个语言是万能的吗?咋能干这么多事情呢。接着李雷打开了维基百科网站,看看上面对这个万能语言怎么说。

维基百科讲Python

因为维基百科在大陆不能访问,所以找了一个替代网站进行了查询了Python的介绍。如图2:

图2

其中对Python可以有几点认识:

  1. Python是一种高级动态语言,有很多人把Python作为一种“胶水语言”使用。使用Python将其他语言编写的编程进行集成和封装。
  2. Python的设计哲学是“优雅”、“明确”、“简单”。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。
  3. Python相比于静态语言,速度会稍慢一些,不过,根据二八定律,大多数编程对速度要求不高。在某些对运行速度要求很高的情况,Python设计师倾向于使用JIT技术
  4. Python因为对网络协议支持很完善,所以常用于写服务器软件和爬虫。

从那里开始

看了一些介绍,李雷依然有一些云里雾里,到底如何开始呢?

在知乎帖子里,有一个回答,提及了一个网站http://www.pythonchallenge.com/,这个网站给了一些谜题,可以使用Python来解答这个谜题,李雷觉得这是一个开始的方案,把学习当成一个游戏,去闯关,应该比上来就学一大顿知识会更容易坚持✊,于是,李雷打开了这个网站,看到了网站上介绍,如图3(已经使用谷歌翻译)

图3

那就直接点击挑战吧,李雷已经准备好。

第0题

页面上显示了这样一句话Hint: try to change the URL address.

然后界面上有一张图片,上面有三个数字238。

根据提示,李雷把现在url上的0.html修改成了238.html,界面显示了 No... the 38 is a little bit above the 2...

李雷有点蒙,于是把0.html改成1.html试一试。结果界面显示 238 is much much larger.**

李雷凭借直觉,是不是应该输入2**38.html才行。结果界面显示 give the answer, not the question.

李雷这下知道了,需要238的值,现在怎么知道238的啥意思呢。根据常识,两个数字中间有符号,可能是某种运算符,于是在网上搜索 python ** 运算符找到一些说明,李雷知道了2**38代码了2的38次方。那是不是在Python语言里输入这个值,就能知道2的38次方是多了呢?

李雷打算找一个在线的Python环境试一试,因为本地安装环境太费事件,而且万一卡住,很容易就放弃了。

在Bing上搜索Python online,找到了一个在不翻墙的情况下,访问速度还可以的网站https://www.onlinegdb.com/online_python_compiler。通过这个网站,可以在线写Python代码,并运行代码看结果。

在中间的编辑器里输入代码,然后点击顶部的Run按钮,就能在下方的输出界面里看到结果了。

image

在题目url里输入274877906944.html。成功到了第一题的界面,第一次完成,李雷有了一点点信心。

第1题

第一题的界面如图4

图4

看到第一题到界面,李雷刚有到信心要逃走了。这是啥意思,虽然给了提示,但是这一串茄子色的字母到底想说啥呢?

Think Think。李雷开始专注的在大脑🧠中寻找思路,看到谍战片的同学知道,以前的情报人员交流情报都会用到编码,避免情报被直接泄露。上图中的K->M,O->Q,E->G。在字母表里,就是把字母往右移动两位映射。

字母表:ABCDEFGHIJKLMNOPQRSTUVWSYZ

比如g fmnc wms每个字母往右移动两位字母映射会得到i hope you。如果每个都这样手动算,是不是很累和苦逼。李雷想,这要是能用Python写个程序自动处理映射关系多好。

解题过程

这需要涉及处理字符串和ASCII码

李雷在花了4个小时,在网上寻找如何处理字符串,ASCII码,并且试着使用循环来处理每个字母。这个过程让李雷痛苦,但是正是有这个过程,李雷写出了下面对代码:

input1 = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
output = ""
startNumber = ord("a")
for i in range(len(input1)):
    if input1[i] == " " or input1[i] == ".":
        output = output + input1[i]
    else:
        oldasc = ord(input1[i])
        newasc = oldasc + 2 - startNumber
        newasc = newasc % 26
        newasc = newasc + startNumber
        newchr = chr(newasc)
        output = output + newchr
print(output)

这里需要考虑,字母yz会对应ab,所以数字超过字母表会从字母表的头开始计算。输出的结果里包含了解题答案:

i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and thatws why this text is so long. using string.maketransxy is recommended. now apply on the url

这句话提示了,可以使用Python的string.maketrans方法。于是在网上查询了一番以后,李雷写出了下面的的代码:

intab = "abcdefghijklmnopkrstuvwxyz"
outab = "cdefghijklmnopkrstuvwxyzab"
trantab = str.maketrans(intab, outab)

str = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj." 
print(str.translate(trantab))

李雷和自己第一次写代码一对比,后者真是比前者...不说了,python真是化繁为简~

这时,李雷知道把map带入到函数中,可以得到ocr,可以去第二题了。

总结

李雷了解了Python是什么,它的历史、优势,在当前能做什么事情。

写了自己第一个Python程序,帮助转换一个字符串。

对学习Python有了那么一点信心。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容