这个系列顾名思义就是《Python编程:从入门到实践》的读书笔记,跟小甲鱼的视频版不同,书的内容有些部分会更详尽。可以作为小甲鱼视频作为补充。这个系列不定期更新,因为看视频加看书太花时间,不一定每天都能做到。尽力吧。
顺便说一句,在开篇推荐语里,ZoomQuiet表示以她的经验来看,完全无基础的读者最好别从第一章开始学习,否则在第一部分就会耗尽所有热情。她建议第一部分尽可能在42小时内粗读一遍,不求甚解。然后跟着第二部分的项目实践部分开始精读。有不懂的再回去查第一部分的基础知识点,针对性的自我答疑。
看得出来,这个“大妈”是个过来人。其实我自己以前学过VB,也学过一个小时的Java。结果都是一个小时就放弃了,原因很简单,真的是太枯燥了。而新人学语言,除非是有巨大热情,或者是有明确目的,否则真的是分分钟放弃给你看。
那么我作为菜鸟,也会秉承着“大妈”的思路,粗读第一部分,重点放到第二部分上。
还有,读书笔记是将每章或每一部分,我觉得重要的点记下来,不是将整本书记下来,所以把本系列文章当教材是没前途的~
第一部分:基础知识
第一章:起步
是讲述怎么下载Python和装编辑器的。因为我对linux不熟,没装过,这里就不介绍了。主要说说mac和Windows的:如何在windows下安装Python / 如何在mac下安装Python 。
编辑器的话,推荐三种:PyCharm CE / Visual Studio Code / Sublime Text。
我个人目前最常用的是PyCharm CE,第三种我没用过,但是是书里推荐的,这里就写上吧。其实大家都差不多,对于初学者来说,没有什么本质差别,随便选就行。像小甲鱼的视频教程里,用的还是python自带的编辑器,也一样用。
第二章《变量和简单数据类型》:
2.2.1 变量名规则:
(1)变量名只能包含字母、数字和下划线。变量名能以字母或下划线打头,但不能以数字打头。例如可以将变量明明为wangdachui_1,但不能命名为1_王大锤。
(2)变量名不能包含空格,但能使用下划线来分隔其中的单词。例如,变量名wang_da_chui可行,wang da chui就会引发错误。
(3)不要将python关键字和函数名用作变量名,即不要使用python保留用作特殊用的单词,如print。
(4)变量名应既简短又具有描述性。例如name比n好,student_name比s_n好,name_length比length_of_persons_name好。
(5)慎用小写字母l和大写字母O,因为他们可能被人错看成数字1和0。
这里多说两句,变量名的核心是让别人知道这个变量名是啥意思。我之前在的某公司,变量名是拼音缩写,再加上根本没有文档继承这些东西,我人都是崩溃的。随便举个例子,比如“高楼大厦”,缩写就成了“glds”,鬼知道你在说什么啊,喂。
变量名的国际惯例是英文,但是中国人的英语水平其实普遍不咋样(我自认自己是幼儿园水平),所以有时候想找个准确的英文名做变量名确实不容易。用拼音也没啥,我自己也经常用拼音,除了看代码的时候,感觉这个人有点不专业(感觉就像是用带有QQ号的QQ邮箱当企业邮箱一样),其实也还好。核心还是要让人看得懂。
2.2.3 变量的定义
变量常被描述为可用于存储值的盒子。在你刚接触变量时,这种定义可能很有帮助,但它并没有准确的描述Python内部表示变量的方式。一种好的多的定义是,变量是可以赋给值的标签,也可以说变量指向特定的值。
刚学习编程时,这种差别可能意义不大,但越早知道越好。你迟早会遇到变量的行为出乎意料的情形,此时如果对变量的工作原理有准确的认识,将有助于搞清楚代码是如何运行的。
我感觉这部分是不是说变量其实就是特定值的名字。当我引用某个变量的时候,其实是在引用某个特定的值。
2.3 字符串的定义
字符串就是一系列字符。在python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号。如下所示:
"This is a string."
’This is also a string.‘
2.3.1 使用方法修改字符串的大小写
name = ”ada lovelace“
print(name.title())
在这个示例中,变量name指向小写字符串”ada lovelace“。在函数调用print()中,方法title()出现在这个变量的后面。
方法是Python可对数据执行的操作。在name.title()中,name后面的句号(.)让Python对变量name执行方法title()制定的操作。每个方法后面都跟着一堆圆括号,这是因为方法通常需要额外的信息来完成其工作。这种信息是在圆括号里提供的。函数title()不需要额外的信息,因此它后面的圆括号是空的。
方法title()是以首字母大写的方式显示每个残次,即将每个单词的首字母都改成大写。
此处我的理解为是,数据就是菜,方法就是做法。是将数据红烧还是清蒸,就是各种方法来决定。比如这段文字中,.title就是清蒸。所以这段代码的意思是先将一条鱼取个名为小潜艇(name = ”ada lovelace“),然后 做(小潜艇.清蒸)(print(name.title()))。
然后你看到的就是做出来的清蒸小潜艇了。
还有其他几个很有用的大小写处理方法。例如,要将字符串改为全部大写或小写,可以像下面这样做:
name = "Ada Lovelace"
print(name.upper()) #输出为ADA LOVELACE
print(name.lower()) #输出为ada lovelace
存储数据时,方法lower()很有用。很多时候,你无法依靠用户来提供正确的大小写,因此需要将字符串先转换为小写,再存储它们。以后需要显示这些信息时,再将其转换为最合适的大小写方式。
在这里我想到现实当中经常遇到的一个实例,那就是在网站上或app上输入账号密码。因为在编程里,大小写是有不同的。Love和love在编程里是两个字符串。那么这些网站在存储账号时,显示就是存了两张表,第一张表是未转译的字符串表,第二张表是转译后的表,且这个表的数据是真正跟数据库的用户数据挂钩的。
然后将两个表的变量名关联下就行了。
那么用户在第二次登陆账号时,比如是“WANGDACHUI”,那么系统先用这个名字在第二个表里查有没有匹配过的变量名“wangdachui”。如果没有,则提示找不到账号,要用户注册。如果有,则掉起第二个表里wangdachui的相关数据。
当然,这都是我瞎想的。
嘿嘿。
2.3.2 在字符串里使用变量的值
在有些情况下,你可能想在字符串中使用变量的值。例如,你可能想使用两个变量分别表示名和姓,然后合并这两个值以显示姓名。
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(full_name)
要在字符串中插入变量的值,可在前引号前加上字母f,再将要插入的变量放在花括号内。这样,当Python显示字符串时,将把每个变量都替换为其值。
这种字符串名为f字符串。f是format(设置格式)的简写,因为python通过把花括号内的变量替换为其值来设置字符串的格式。上述代码的输出如下:
ada lovelace
使用f字符串可完成很多任务,如利用与变量关联的信息来创建完整的消息,如下所示:
first_name = "ada"
last_name = "lovelace"
full_name = f"{first_name} {last_name}"
print(f"Hello,{full_name.title()}") #.title将full_name的值变为首字母大写。
输出为Hello,Ada Lovelace
这里的得到两个新知识,一个是f,一个是{}。组合使用方法,书中已经写了。这里就不赘述了。但这里稍微说一下,目前我所知道的小括号()、中括号[]、大括号{}都用上了。要是叠加一下{[()]},啧啧,太美不敢看啊。
2.3.3 使用制表符或换行符来添加空白
在编程中,空白泛指任何非打印字符,如空格、制表符和换行符。你可以使用空白来组织输出,让用户阅读起来更容易。
要在字符串中添加制表符,可使用字符组合\t,如下述代码所示:
print("\tPython") #输出效果为: Python,多了四个空格。
要在字符串中添加换行符,可使用字符组合\n:
print("languages:\npython\nc\njavascript") #懒的切换大小写了,将就着看吧
#输出效果如下:
languages:
python
c
javascrip
还可以在同一个字符串中同时包括制表符和换行符。
print("languages:\n\tpython\n\tc\n\tjavascript")
#输出效果如下:
languages:
python
c
javascript
\n和\t单看着还行,一旦跟其他英文混在一起就看起来非常难受。比如这句:”languages:\n\tpython\n\tc\n\tjavascript”,不仔细看就跟乱码一个德行。
2.3.4 删除空白
“Python”和“Python ”在程序看来却是两个不同的字符串。Python能够发现“Python ”中额外的空白,并认为它意义重大——除非你告诉它不是这样的。
空白很重要,因为你经常需要比较两个字符串是否相同。一个重要的示例是,在用户登录网站时检查其用户名。不过在非常简单的情形下,额外的空格也可能令人迷惑。索性在Python中删除用户输入的数据中的多余空白简直易如反掌。
Python能够找出字符串开头和末位多余的空白。要确保字符串末位没有空白,可使用方法rstrip()。
favorite_language = "python "
favorite_language.rstrip()
输出为:'python' #删除了空格
这个删除是暂时的,接下来再次询问favorite_language值的时候,你会发现这个字符串与输入时一样,依然包含多余的空白。
要永久删除这个字符串的空白,必须将删除操作的结果关联到变量:
favorite_language = favorite_language.rstrip()
为删除这个字符串中的空白,要将其末位的空白剔除,再将结果关联到原来的变量。在编程中,经常需要修改变量的值,再将新值关联到原来分变量。这就是变量的值可能随程序的运行或用户输入的数据而发生变化的原因所在。
你还可以剔除字符串开头的空白,或者同时剔除字符串两边的空白。为此,可分别使用方法lstrip()和strip().
favorite_language = " python "
favorite_language.rstrip() #输出为" python"
favorite_language.lstrip() #输出为"python "
favorite_language.strip() #输出为"python"
2.3.5 使用字符串时避免语法错误(#此块内容就不照本宣科了,原文有点麻烦)
''和"":
单双引号常见语法错误主要是英文里单引号使用的场景有关,英文里有‘s的使用场景。所以当字符串里的内容为‘This’s pen’时,因为有三个单引号,所以Python无法判断这句话到底在哪结束了。
碰到这种情况就要用双引号”This’s pen“,Python就知道这句话从哪里开始哪里结束了。
不过这种情况国内出现的可能性不大。
今天就到这里吧,下次再会~
胭惜雨
2020年12月26日