lpthw2018's Introduction
lpthw2018's People
lpthw2018's Issues
习题1-21的练习笔记
《笨方法学Python》
前言
- 指令式教学。重复练习。
- 编程黑带。
- 读完这本书之后,就可以接触更复杂的编程主题。
笨方法更简单
- 从头到尾完成每一个习题。
- 一字不差地录入每一段程序。
- 让程序运行起来。
学会任何一门语言。(计算机语言以及人类语言)
编程新手最重要的三种技能:读和写、注重细节以及发现不同
- 读和写。练习如何阅读这些代码。
- 注重细节。如果缺乏对于工作中每一个微笑细节的注意,你的工作成果将不可避免地出现各种关键缺陷。
鼓励:在做这些习题并且录入代码的时候,你一定会写错东西,这是不可避免地,即使有经验的程序员也会偶尔出错。你的任务是把自己写的东西和正确答案对比,把所有的不同点都修正过来。这样的过程可以染给你对程序里的错误和bug更加敏感。
关于坚持练习的一点提示
- 对我来说,要学习一样东西,最自然、最根本的方法就是去反复地联系。
- 坚持下去。
- 万事开头难。
- Brick walls are there for a reason : they let us prove how badly we want things.
习题0 准备工作
- 距离我第一次完成习题0,已经过去了半年多,但是还可以回忆起当时的感受,从来没有和计算机对话过,所以,即使是在terminal里输入简单的命令行都已经让我非常激动,但是激动归激动,自己停下来好久了。还好,现在正在继续。
习题1 第一个程序
- 如何安装文本编辑器:下载安装TextWrangler,command+space 搜索 TextWrangler。
- 半年前我就完成了这个习题,但是今天在运行终端的时候,忘记了在终端里先要使用cd 命令进入Python目录下,当然,你如果取了另一个文件名,那就进入另一个目录下。这是对事实性知识记忆不准确造成的。
- 复盘解题过程:遇到困难,你是如何解决的?请举一例,详细描述你发现问题、探索问题、解决问题的全过程和各环节时长。你做了哪些尝试?哪些环节可以做得更好?
- 提出问题:习题1中,为什么有些用双引号,有些用单引号?
- 百度搜索:[http://blog.csdn.net/baidu_33386573/article/details/52277507] Python中 单引号,双引号和三引号的区别。
- 结果:python字符串通常有单引号('...')、双引号("...")、三引号("""...""")或('''...''')包围,三引号包含的字符串可由多行组成,一般可表示大段的叙述性字符串。
- 引出:上面的搜索结果页面给出的解释非常详细。python支持单引号和双引号,也是有原因的。但有些情况,需要用到\转义符。三双引号内还可以添加#加注释。
- 附加练习:
#习题2 注释和#号
- 注释里如果需要加入其它国家的语言,就需要在脚本的最上面加上:# -- coding: utf-8 --
- 问题:print 后的字符可以放在括号里,也可以不放在括号里吗?
- 搜索结果:百度知道,在python3以前,人们习惯不在print后面加括号 -- 加上也没有问题;在python3以后,语法要求在print后面加上括号。
- **Atom卡顿问题。**之前,我安装了python最新版,今天我已经把它卸载了,所有的python文件我使用atom编写的,今天因为atom突然卡顿地厉害,我现在改用了textmate。
- 经常在给客服打电话时需要用到#,在电话里,#代表的就是一种结束,也是一种着重的意思。所以它的英文名叫:pound characters,pound不是重量符号么。
习题3 数字和数学计算
- %求余,不习惯,又一次懵逼,所以再次搜索,第一条百度知道就告诉我,75 % 4 = 3,是因为75去掉18个4之后,还有一个3,没有办法被4整除,所以,结果等于3。
- +加号用来做加法运算。
- -减号用来做减法运算。
- /斜杠用来做除法运算。
- 星号用于乘法运算。
- %用于求余运算。
- <,>,<=,>= 都是用于比较运算,比较大小,然后给出对错的答案。
- 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6 .这道数学题,难住我这个程序员小学生了。4%2求余等于0,1.0/4,在python2里是做整数运算的话也变称0.
- 浮点数:和数学运算不同的地方是,Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数:
- 1 + 2 # ==> 整数 3
- 1.0 + 2.0 # ==> 浮点数 3.0
- 整数和浮点数混合运算的结果就变成浮点数了:
- 1 + 2.0 # ==> 浮点数 3.0
- 为什么要区分整数运算和浮点数运算呢?这是因为整数运算的结果永远是精确的,而浮点数运算的结果不一定精确,因为计算机内存再大,也无法精确表示出无限循环小数,比如 0.1 换成二进制表示就是无限循环小数。
- 求知若渴,虚心若愚。无限这样哲学性的语言出现在程序里。我想起了黑客帝国。
- 在学习的初期,我遇到了非常多的困难,可能有些困难对其他人来说很容易就突破,但是,困难变成一道模糊的高墙,导致我看不清到底有什么问题。所以,我想,在初期, 我们需要对困难有清晰的了解,到底是什么问题,毕竟这些问题都曾经被拥有相同大脑的人类克服过,而我的大脑也一样是一颗完整的大脑呀。
习题4 变量和命名
- 在学习新的章节时,确定自己已经基本掌握之前的内容。更重要的是将之前的内容转化成语言。print,是在脚本中输出字符串的命令,算术,用于计算或者比较大小。接下来,是变量,给你一个东西,然后给它取个名。
- 作者又一次讽刺了程序员,其实是在给初学者加油,成为程序员的门槛其实并不高,但是,程序员有他自己的特点,如果你也想城固程序员的话,需要让自己变得像程序员,有人说过,当CEO之前,就要像CEO一样思考和行动。
- space_ in _ a _ car, 这是为什么?下划线字数。
- 附加练习。如果只用4的话,就不会有小数了。浮点数是为了让计算更加精确。
- 在终端里使用python来当计算器,并且运用到变量和命名,需要先进入python,再在里面赋予变量名称,然后再开始计算。
- ==,用于比较等号两边的大小。在赋值的时候,i=10,i = 10,这两个写法,你喜欢哪一个?
习题5 更多的变量和打印
- 字符串:每一次你使用双引号(“)把一些文本引用起来,就创建了一个字符串。字符串是程序向人展示信息的方式。
- 字符串的作用:打印显示它们,将它们写入文件,还可以将它们发送给网站服务器。
- %d,%s,这两个一个表示数字,一个表示文字。
- 为什么要修改所有变量的名字,去掉my_?
- python的格式化字符:http://blog.csdn.net/weixin_35955795/article/details/52564672
- 找到了配套的视频资料,这个时候不要有理所当然效应,找到了视频,不代表你已经学会了。有需要的朋友可以找我。
- 变量起名字不能以数字开头,有些网站就是这样的。
- %% 百分号标记 #就是输出一个%
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中 - 教你学编程的一个问题就是,你需要先学会编程,才能读懂我的一些描述。我们在童年的时候,自己对大多数事物都不懂或者不明白,但是,那时候我们学得更快,成年后,我们希望确定,不想让自己放在一个不确定的环境中,所以,要接受这些不确定。就像在烦恼中打坐一样。
- round(7.222),结果是7。
习题6 字符串和文本
- 字符串。字符串通常是指你想要展示给别人的或者是想要从程序里”导出“的一小段字符。
- 在理解文字的时候,需要将文字还原成逻辑关系,在脑海中重新编排,纯粹看文字是无效的。比如这一句:字符串可以包含之前已经见过的格式化字符。意思是在字符串的内部可以有%d %s %r等格式化字符。
- 超市里买东西,我要买鸡蛋、牛奶、面包、清汤。程序员说:(eggs,milk,bread,soup)
- 为什么W和E用加号就可以连在一起? 字符串相加就是简单的将两个字符串连接到一起合成一个字符串。在网络上搜索练习题,并且在自己的脚本中测试一下,你可以学到一些。
- ”把一个字符串放进另一个字符串“, 我一共找到 6处。把A放进了B里。A是什么,B是什么?
习题7 更多打印
- 省略号,也可以用乘号来操作。乘以十,就像十乘以十,会不断在后面加上一个一个零。
- print 是打印双引号里的内容,如果没有双引号,会直接打印出变量所指代的内容。
- 那个逗号,如果去掉,芝士汉堡就分开了。
- 鼓励 作者在这里又一次鼓励初学者。程序员和魔法师一样,他们希望大家认为他们从不犯错,不过这只是表象而已,他们每时每刻都在犯错。
- end 语句,没有什么end语句,我可以把它变成start。
- snow这一句上,你可以把格式化字符改成%r,这样就是原始数据。”snow“.
- 这里,再次强调为什么要将程序语言转换成日常语言,因为程序里的逻辑关系,需要被人理解,或者是一个初学者或者是六个月前的自己。
- 程序惯例:单引号用于创建更加简短的字符串。太长的代码,需要用逗号分成两行,这样比较好看。
习题8 打印,打印
- 打印出来的%R 从双引号变成了单引号。常见问题中给出答案。其他注释给出的都是正确的。
- %s %r ,raw,原始表示,程序员原始版本。
- 程序语言:有些语言是我们给它的,有些是它自己的语言。这就是语言特性。比如 true false等。如果加上了双引号,这些词汇也会变成我们的语言。失去了它原本的含义。
- 首先要在# -- coding: utf-8 --,加上之后,才可以在脚本中输入中文。另外,如果要显示中文,你需要用%s,而不是%r,因为%r显示的是原始数据。比如”你好“在%r的情况下就变成了\xe4\xbd\xa0\xe5\xa5\xbd。我不认识它们。
习题9 打印,打印,打印
- 对于每一行的注释都正确。
- 三引号在最开始的习题中有提到。
习题10 那是什么?转义序列
- 两种让字符串扩展到多行的方法。第一种方法是在月份之间/n隔开。newline 在该位置上放入一个换行字符。
- 这句什么意思?使用反斜杠可以将难打印出来的字符放到字符串。
- 双斜杠。打印一个反斜杠来。
- 程序语言特性“边界”。双引号就是程序字符串的边界。如果你想扩展出来,就要在这个边界放上一个符号,告诉程序,告诉其他国家的人民,这只是我们的一个省的边界,你们也属于我们国家。将转义字符放在需要转义的字符前面。就像在需要换行的位置放置\n一样。
- 还有另外一种方法是 三引号。三个双引号里面,你可以随便玩。
- 转义序列:编程语言中有特殊意义的符号标记。
- python转义序列:挺多的。http://blog.sina.com.cn/s/blog_777e04300102x8mn.html 放个链接。
- 附件练习:转义序列写成卡片。
- 附件练习3:A = "A\nB\n\t*C" \nprint '%s' % A
- %r 会把单双引号,都变成单引号。%s,则会显示引号里的内容。
- 为什么要把\写成两个。
- 记住:%r用于调试,%s用于显示。
习题11 提问 输入
- 注意,每行的逗号,如果存在,就会继续在一行里输入,如果没有,就会跳到下一行输入。这个影响不大。
- raw_input() 放个链接 http://blog.csdn.net/kjing/article/details/7450146,就是输入什么就给出什么。原始数据。
- 我还没找到它其他的用法。?????
- 从命令行输入,而不是直接在raw_input()的括号里输入,这就是程序语言。
- int, input,raw_input,好多样。
- 我在用浮点数格式化字符,用了。
习题12 提示别人
- 提问是,直接抛出问题,你只要给出答案。但是有些时候,用户不知道如何回答,回答什么,这就是需要提示了。
- raw_input()在括号里不直接输入内容,但是可以预先设置一个提示。y = raw_input("name? "),用户输入的结果赋值给y。这就是我们利用计算机去获取一个人的答案的方式。
- Help on built-in function raw_input in module builtin:
raw_input(...)
raw_input([prompt]) -> string
Read a string from standard input. The trailing newline is stripped.
If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.
On Unix, GNU readline is used if enabled. The prompt string, if given,
is printed without a trailing newline before reading.
- 在python里面输入pydoc raw_input之后出现的内容。
- pydoc大概是文档生成工具?为什么要生成文档?
- 变量命名。raw_input。
习题13 参数、解包和变量
- 另外一种将变量传递给脚本的方法。第一种是什么?命名,通过raw_input,通过%r,%s等格式化字符,把括号内的变量传递给print命令行。
- 参数:python ex13.py ,后半部分就是所谓的参数。argument。写一个可以接受这个参数的脚本。相当于文件中的打开功能,打开的时候,选择一个文件,然后读取文件内容。
- import,将python的特性引入脚本的方法。python不会一下子将它所有的特性给你,你要什么,才给你什么。
- argv:argument variable。参数变量。
- UNpack,解包。把argv中的东西解包,将所有的参数依次赋值给左边的这些变量。
- sys模块。library.库。
- 附加练习:
- need more than 3 values to UNpack。
- 这个在脚本里已经完成。你可以给它去任何名字。
- 模块为我们提供额外的特性。那么raw_input给的是正常的特性.script = raw_input("what is script?")
- argv和raw_input()有什么不同? 不同点在于用户输入的时机。如果参数是在用户执行命令时就要输入,那就是argv,如果是在脚本运行过程中需要用户输入,那就使用raw——input()。
习题14 提示和传递
- 一般zed在上一习题中的附件练习,会作为下一习题的主要内容。完全匹配必要难度理论。
- prompt,用户提示变量。你可以设置为!!!
- 找不到zork和探险游戏。哪位同学找到了,怎么玩?
- prompt 可以改为任何你想要的提示,就像一个暗号一样。
- 确认弄懂了三个引号"""可以定义多行字符串,而%是字符串的格式化工具。% 是格式化工具,在数字运算中,是求余符号。
- http://www.cs.com.cn/ssgs/kj/201702/W020170216572145861064.jpg 这就是zed在常见问题中提到的tandy电脑。
- 在继续往前的时候,我们要知道自己已经学习了什么,不然在后面遇到问题的时候,可能已经忘记了自己学过什么,更不知道如何去运用它们。
习题15 读取文件
- 我们的方案是,使用argv和raw_input从用户那里获取信息,从而知道要处理哪些文件。
- 在再次输入文件名的时候,你可以尝试输入其他文件名,看看显示出来的是什么内容。
- 这里有两个新东西。open() 和 txt.read().open:你可以看到它和你自己的脚本或者raw_input命令类似,它会接收一个参数,并且返回一个值,你可以将这个值赋给一个变量。这就是你打开文件的过程。txt就是那个变量。txt.read(),文件接受命令的方式是(.),而不是等号=,紧跟着你的命令,然后是类似open和raw_input的参数。不同点是:当你说txt.read时,你的意思其实是:”嘿 txt!执行你的read命令,无需任何参数!
- 函数、方法。
- 再次鼓励 看不明白也没关系,迷失在别的程序员的知识海洋里是很正常的一件事情。
- pydoc file:
- 你不需要把文件名写死到代码里,只需要让python把文件名当做参数接纳进去。
习题16 读写文件
- 本节需要记住的命令:close、read、readline、truncate、write。关闭,读取,读取文本文件中的一行,清空文件,将stuff写入文件。
- KeyboardInterrupt 出现这个提示。上网一搜,提示:用户中断执行(通常是输入^C)。我确实取消清空了。我试试清空。
- 学习python确实可以直面自己很多的学习顽疾,如果不是一丝不苟地去做,那还是会跳回到老路。因为必要难度理论的存在,人在做这样的挑战时是有点兴奋的,往往是内在动机驱动。
- 以上这一段其实是在自我鼓励,我一个人在做挑战任务,身边也没有其他人可以帮助我。我必须要这样子。把这些话写在学习笔记里,深深地藏起来,不会有人看到的。
- W ,代表书写,我们在书写时需要郑重其事的。所以在程序里也一样。
- 模式,读取模式,写入模式,追加模式。默认模式。
习题17 更多文件操作 复制
- 这里的直接调用其他程序员写的代码,未来应该是一个非常实用的工具,如果什么代码都自己写,那么,我们的手和时间是不够用的。人月神话。这本书还没看呢,买来。
- 附加练习第一题弄不明白,在终端terminal中启动python之后,输入import,显示错误。
- 我不知道怎么把这个代码变短。我知道为什么我不知道,我不知道这个复制来复制去的内在逻辑。也许继续往下就明白了。
- 再次鼓励常见问题中,又一次鼓励初学者。
习题18 命名、变量、代码和函数
- 前十五道题目是我早前练习过的,所以今天重新复习,感觉难度不高,很快我就到了前段时间才练习的习题18.这里,我就感觉到难度,但是,是因为不熟悉的缘故。
- 函数。函数可以做的三件事。他们给代码段命名,就跟变量给字符串和数命名一样。它们可以接收参数,就跟你的脚本接收argv一样。使用#1和#2,他们可以让你创建“迷你脚本”或者“小命令”。
- def 就是定义的意思。
- 在有必要难度的情况下,zed不会太难为初学者。附加练习是一个清单。你可以对着这个清单自己尝试编写一个命令,一个函数。这个检查表可以用来检查接下来所有的习题。运行函数,调用函数,使用函数。run call use
- 故意写错代码,这样的事情,我还不敢做。
习题19 函数和变量
- def 后面跟着的就是函数。
- 我们可以直接给函数传递数字,也可以给它变量,还可以给它数学表达式,甚至可以把数学表达式和变量合起来用。
- 在每一行的上写上注释。完成
- 自己编写至少一个函数,然后用10种方式运行这个函数。自己按照检查列表,写一个自己和女友的年龄函数。
- 5个参数就不少了,我刚才用了三个。但是,我没有用十种不同的方式去运行。我怕会疯掉。
习题20 函数和文件
- 还有两个空没有填。
练习回顾
这是我第二次拿起这本书。
-
半年前,自己就练习了前面15题,可是没有继续下去,当时应该也是python课程开课在即,不过我当时没有报名。这一次,我已经考虑很久了,但是,对于后面的内容还是要稳一点,所以,我暂时先完成必要中的必要。后面几天,我会继续补上,另外,学会用git命令上传最新的练习题。
-
前15题,对我来说是简单的,但是第一次看的时候,依然会有难度,这是第二次练习了,因为有了熟悉度,我可能在学习上有这个问题,对于不熟悉的东西,可能天然得认为它会比较难,但是,一旦熟悉之后,我可能会比较容易学习。这是前期需要突破的。
-
另外,自己也在练习习题的过程中,反思自己之前的学习习惯。这些,我在我的习题练习笔记中写了很多。
-
关于心流,我今天看到一位同学这样写:在环境安全、适当挑战、放松的情况下,容易进入心流,我想我也是的。习题完美融入了必要难度理论。
-
这个周末还是比较认真,希望自己可以之后的学习中继续努力,另外,我会在学习期间,发起至少三次线下聚会,我以前不是互联网行业的,后来转入互联网做运营,现在想学编程,也许未来可以转行。所以,我需要认识一些程序员同学,正好这也是一次机会。
20170730晚
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.