为了给AI学习打下基础,也因为Python是一个理科学生必备的技能之一,最近准备学习Eric Matthes的Python编程:从入门到实践。作为Python学习的Bible,就像c++ primer之对于c+,这本书不应该只读一次。之前学习c++的时候,到了后期,一个练习敲几千行代码,debug的时间比写代码的时间都长。最后分模块反复检查,都会发现是一个小小的语法错误导致整个程序行不通。而这些小小的语法很多都是c++ primer中被忽略的一句话。Python语法比c++简单了许多,但逻辑都是一样的。
这本书分为语法和项目两个部分。前十一章是语法,接下来有三个项目——外星人入侵、数据可视化和web应用程序。本文主要对语法部分进行总结。
一. 变量与数据类型 1. 变量变量是对一块内存区域取的名字,内存中可以存放不同的数据。
>>>message = "Hello Python world!" >>>print(message) Hello Python world!变量命名规则
- 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头。
- 变量名不能包含空格,但可使用下划线来分隔其中的单词。
- 不要将 Python 关键字和函数名用作变量名,即不要使用 Python 保留用于特殊用途的单词。
- 变量名应既简短又具有描述性。
- 慎用小写字母 l 和大写字母 O ,因为它们可能被人错看成数字 1 和 0 。
字符串就是一系列字符。可以用" "或‘ ’表达。这种灵活性让你能够在字符串中包含引号和撇号。
"This is a string." 'This is also a string.'使用方法修改字符串的大小写
>>>name = "ada lovelace" >>>print(name.title())#首字母大写 Ada Lovelace >>>print(name.upper())#全大写 ADA LOVELACE >>>print(name.lower())#全小写 ada lovelace
在 print() 语句中,方法 title() 出现在这个变量的后面。 方法 是 Python 可对数据执行的操作。
合并(拼接)字符串Python 使用加号( + )来合并字符串。
>>>first_name = "ada" >>>last_name = "lovelace" >>>full_name = first_name + " " + last_name >>>print(full_name) ada lovelace使用制表符或换行符来添加空白
在字符串中添加制表符,可使用字符组合 t;在字符串中添加换行符,可使用字符组合 n。
>>>print("tPython")
Python
>>>print("Languages:nPythonnCnJavascript")
Languages:
Python
C
Javascript
删除空白
要确保字符串末尾没有空白,可使用方法 rstrip(); 你还可以剔除字符串开头的空白,或同时剔除字符串两端的空白。为此,可分别使用方法 lstrip() 和 strip()。然而,这种删除只是暂时的。要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中。
>>>favorite_language = 'python ' >>>print(favorite_language) 'python ' >>>print(favorite_language.rstrip()) 'python' >>>print(favorite_language) 'python '3. 数字 浮点数
Python将带小数点的数字都称为浮点数。需要注意的是,浮点数运算结果包含的小数位数可能是不确定的。
3 * 0.1 0.30000000000000004
一个小tip:
在 Python 2 中,整数除法的结果只包含整数部分,小数部分被删除。请注意,计算整数结果时,采取的方式不是四舍五入,而是将小数部分直接删除。若要避免这种情况,务必确保至少有一个操作数为浮点数,这样结果也将为浮点数。
使用函数 str() 避免类型错误age = 23 message = "Happy " + age + "rd Birthday!"
上面的代码中,Python 知道,这个变量表示的可能是数值 23 ,也可能是字符 2 和 3 。因此会出现错误:
TypeError: Can't convert 'int' object to str implicitly
像上面这样在字符串中使用整数时,需要显式地指出你希望 Python 将这个整数用作字符串。为此,可调用函数 str() ,它让 Python 将非字符串值表示为字符串。
>>> age = 23 >>> message = "Happy " + str(age) + "rd Birthday!" Happy 23rd Birthday!4. 注释
在 Python 中,注释用 # 标识。#后面的内容都会被 Python 解释器忽略。另外,可用**ctrl+/**快捷键对代码进行注释。
编写注释的主要目的是阐述代码要做什么,以及是如何做的。
要成为专业程序员或与其他程序员合作,就必须编写有意义的注释。当前,大多数软件都是合作编写的,编写者可能是同一家公司的多名员工,也可能是众多致力于同一个开源项目的人员。训练有素的程序员都希望代码中包含注释,因此你最好从现在开始就在程序中添加描述性注释。作为新手,最值得养成的习惯之一是,在代码中编写清晰、简洁的注释。
二. 列表列表由一系列按特定顺序排列的元素组成。鉴于列表通常包含多个元素,可以给列表指定一个表示复数的名称。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']1. 访问列表元素
要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。**在 Python 中,第一个列表元素的索引为 0 ,而不是 1 。**在大多数编程语言中都是如此,这与列表操作的底层实现相关。若列表有3个元素,而你的索引为[3],则会出现错误:IndexError: list index out of range。(索引越界)
>>> bicycles = ['trek', 'cannondale', 'redline', 'specialized'] >>> print(bicycles[0]) trek2. 修改、添加与删除列表元素 修改列表元素
>>>motorcycles = ['honda', 'yamaha', 'suzuki'] >>>print(motorcycles) ['honda', 'yamaha', 'suzuki'] >>>motorcycles[0] = 'ducati' >>>print(motorcycles) ['ducati', 'yamaha', 'suzuki']在列表中添加元素
-
最简单的方式是将元素附加到列表末尾,使用的是方法 append()。
-
使用方法 使用方法 insert() 可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。
>>>motorcycles = ['honda', 'yamaha', 'suzuki']
>>>motorcycles.append('ducati')
>>>print(motorcycles)
['honda', 'yamaha', 'suzuki', 'ducati']
>>>motorcycles.insert(0, 'ducati')
>>>print(motorcycles)
['ducati', 'honda', 'yamaha', 'suzuki','ducati']
删除列表元素
-
如果知道要删除的元素在列表中的位置,可使用 del 语句。
del motorcycles[0]
-
有时候,你要将元素从列表中删除,并接着使用它的值。方法 pop() 可删除列表末尾的元素,并让你能够接着使用它。实际上,你可以使用 pop() 来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。
>>>motorcycles = ['honda', 'yamaha', 'suzuki'] >>>popped_motorcycle = motorcycles.pop() >>>print(motorcycles) ['honda', 'yamaha'] >>>print(popped_motorcycle) suzuki
-
如果你只知道要删除的元素的值,可使用方法 remove()。
>>>motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati'] >>>motorcycles.remove('ducati') >>>print(motorcycles) ['honda', 'yamaha', 'suzuki']
Python 方法 sort() 可以让你对列表按字母排序a到z进行排序。你还可以按与字母顺序相反的顺序排列列表元素,为此,只需向 sort() 方法传递参数 reverse=True。对列表元素排列顺序的修改是永久性的。
>>>cars = ['bmw', 'audi', 'toyota', 'subaru'] >>>cars.sort(reverse=True) >>>print(cars) ['toyota', 'subaru', 'bmw', 'audi']sorted() 函数临时排序
函数 sorted() 让你能够按字母排序a到z显示列表元素,同时不影响它们在列表中的原始排列顺序(临时排序)。同样,如果你要按与字母顺序相反的顺序显示列表,也可向函数 sorted() 传递参数 reverse=True 。
>>>cars = ['bmw', 'audi', 'toyota', 'subaru'] >>>print(sorted(cars)) >>>print(cars) ['audi', 'bmw', 'subaru', 'toyota'] ['bmw', 'audi', 'toyota', 'subaru']4. 反转列表
要反转列表元素的排列顺序,可使用方法 reverse()。注意, reverse() 不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序。
5. 获取列表长度使用函数 len() 可快速获悉列表的长度。
>>> cars = ['bmw', 'audi', 'toyota', 'subaru'] >>> len(cars) 4



