阅读时间:
2019.08.25----2019.08.30:第一部分 基础知识。
第2章:变量
1、变量的命名和使用
- 变量名只能包含字母、数字和下划线。可以字母或者下划线打头,但不能以数字打头。例如:可以为message_1,不能为1_message。
- 变量名不能包含空格,但可使用下划线分隔。例如:变量名greeting_message,不能为greeting message。
- 不能用Python关键字和函数名作为变量名。
- 慎用小写字母l和大写字母O。
2、字符串
用引号括起来的都是字符串,其中的引号可以是单引号,也可以是双引号。可以在字符串中包含引号和撇号。
- title()方法:以首字母大写的方式显示每个单词。
- upper()方法:改为全部大写。
- lower():改为全部小写。
name
.
title
(
)
name
.
upper
(
)
name
.
lower
(
)
-
删除空白字符,使用
.rstrip()
(删除末尾)这种删除只是暂时的要想永久删除这个字符串的空白,必须将删除操作的结果存回到变量中;.lstrip()
删除开头的空白;strip()
同时删除字符串两端的空白。 - str(age)将非字符串值转为字符串。
第3章:列表
列表是一系列按特定顺序排列的元素组成。可包含字母、数字等,元素之间可以没有任何关系。用
[]
来表示列表,并用逗号分隔其中的元素。
bicycles
=
[
'trek'
,
'cannondale'
,
'redline'
]
使用print()打印出来时包含
[]
1、访问列表元素
索引从0开始而不是1,Python可以通过索引
-1
直接访问最后一个列表元素。
2、在列表中添加元素
-
在列表末尾添加,使用
.append('China')
-
在列表中插入元素,使用
insert()
,可在任何位置添加新元素,因此需要指定新元素的索引和值。moto.insert(0,'ducati')
3、从列表中删除元素
-
del删除,可删除任何位置处的元素。
del moto[0]
-
pop()方法,删除列表末尾的元素。
moto.pop()
-
pop(index),弹出列表中任何位置处元素。
moto.pop(0)
-
根据值删除元素。
moto.remove('ducati')
,删除掉ducati, 只删除掉第一个指定的值。若删除的值出现多次,需使用循环判断。
4、组织列表
-
方法sort()
对列表进行永久性排序。
cars.sort()
,永久性修改了列表元素的排列顺序。cars.sort(reverse=True)
进行逆向排序。 -
函数sorted()
对列表进行临时排序。
sorted(cars,reverse=True)
-
反转列表,
cars.reverse()
。不是按与字母相反的顺序排列列表元素,而只是反转列表元素的排列顺序。reverse()为永久性修改。 -
函数len()获取列表的长度。
len(cars)
。 Python计算列表元素时从1开始。
第4章:操作列表
1、for循环
cars
=
[
'bmw'
,
'audi'
,
'toyota'
,
'subaru'
]
for
car
in
cars
:
print
(
car
)
2、创建数字列表
-
使用函数range(),
range(1,5)
,打印出1~4。 -
使用函数list()将range()的结果直接转换为列表,也可将range()作为list()的参数进行输出。
numbers = list(range(1,5))
。函数range()还可指定步长,例如range(2,11,2)
,从2开始,不断加2,直到达到或超过终止11。 -
数字列表的最大值、最小值、总和。
max(digits)、min(digits)、sum(digits)
3、使用列表的一部分
-
切片,指定第一个索引和最后一个索引加1,例如:
cars[0:3]
,打印0、1、2这3个元素;若没有指定第一个索引,将从列表开头开始,cars[:3]
。类似的,指定第一个索引,一直到最后,cars[1:]
-
复制列表,
new_cars = cars[:]
4、元组
列表是可修改可变化的数据集。
不可变的列表被称为元组,元组使用圆括号
-
定义元组,
dimensions = (200, 50)
- 遍历元组中的所有值,像列表一样使用for循环遍历。
- 修改元组变量。给元组变量赋值是合法的。
第5章:if语句
1、使用
in和not in
检查特定值是否包含在列表中。
'bmw' in cars
2、
if-elif-else
结构
3、确定列表不是空
cars
=
[
'bmw'
,
'audi'
,
'toyota'
,
'subaru'
]
if
cars
:
#cars不为空
for
car
in
cars
:
print
(
"buy "
+
car
)
print
(
"\nFinish."
)
else
:
print
(
"OK!"
)
#执行结果:
buy bmw
buy audi
buy toyota
buy subaru
Finish
.
第6章:字典
字典 是一系列 键-值对 。可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。 字典 用放在==花括号{}==中的一系列键-值对表示。
alien
=
{
'color'
:
'green'
,
'points'
:
5
}
favorite_languages
=
{
'jen'
:
'python'
,
'sarah'
:
'c'
,
'edward'
:
'ruby'
,
'phil'
:
'python'
,
}
1、删除键-值对(删除的键值对永久消失)
alien
=
{
'color'
:
'green'
,
'points'
:
5
}
del
alien
[
'point'
]
2、遍历字典
-
遍历所有的键-值对。
for key, value in favorite_languages.items():
-
遍历字典中的所有键。
for name in favorite_languages.keys():
-
按顺序遍历字典中的所有键。
for name in sorted(favorite_languages.keys()):
-
遍历字典中的所有值。
for language in favorite_languages.values():
。若要 剔除重复项,可使用集合(set) ,集合类似于列表,但每个元素必须是独一无二的,for language in set(favorite_languages.values()):
3、嵌套
将一系列字典存储在列表中,或将列表作为值存储在字典中,甚至在字典中嵌套字典。
1)字典列表(在列表中存储字典)
alien_0
=
{
'color'
:
'green'
,
'points'
:
5
}
alien_1
=
{
'color'
:
'yellow'
,
'points'
:
10
}
aliens
=
[
alien_0
,
alien_1
]
for
alien
in
aliens
:
print
(
alien
)
2)在字典中存储列表
favorite_languages
=
{
'jen'
:
[
'python'
,
'ruby'
]
,
'sarah'
:
[
'c'
]
,
'edward'
:
[
'ruby'
,
'go'
]
,
'phil'
:
[
'python'
,
'haskell'
]
,
}
for
name
,
languages
in
favorite_languages
.
items
(
)
:
print
(
"\n"
+
name
.
title
(
)
+
"'s favorite languages are:"
)
for
language
in
languages
:
print
(
"\t"
+
language
.
title
(
)
)
3)在字典中存储字典
在字典中嵌套字典,代码会变得复杂。尽可能让每位用户的字典的结构都相同,这样使嵌套的字典处理起来更容易。
users
=
{
'aeinstein'
:
{
'first'
:
'albert'
,
'last'
:
'einstein'
,
'location'
:
'princeton'
,
}
,
'mcurie'
:
{
'first'
:
'albert'
,
'last'
:
'einstein'
,
'location'
:
'princeton'
,
}
,
}
第7章:用户输入和while循环
1、函数input()
函数input()接受一个参数:即要向用户显示的提示或说明。
message = input("Tell me something:")
2、使用标志
active
=
True
while
active
:
message
=
input
(
"prompt"
)
if
message
==
'quit'
:
active
=
False
else
:
print
(
message
)
3、break和continue
break为结束循环,continue为结束当前循环进入下一次循环。
4、使用while循环来处理列表和字典
- 在列表之间移动元素。可使用 pop() 以每次一个的方式从列表删除。
- 删除包含特定值的所有列表元素。
while
'cat'
in
pets
:
pets
.
remove
(
'cat'
)
第8章:函数
1、实参和形参
def greet_user(username)
的定义中,username是一个形参——函数完成其工作所需的一项信息。在
greet_user('jesse')
的调用中,值
jesse
是一个实参,实参是调用函数时传递给函数的一项信息。将实参
jesse
传递给了函数greet_user(),这个值被存储在形参username中。
2、关键字实参
关键字实参是传递给函数的
名称-值对
。
def
describe_pet
(
animal_type
,
pet_name
)
:
#调用时,使用关键字实参时,务必准确地指定函数定义中的形参名
describe_pet
(
animal_type
=
'hamster'
,
pet_name
=
'harry'
)
3、默认值
编写函数时,可给每个形参指定默认值。在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。
def
describe_pet
(
pet_name
,
animal_type
=
'dog'
)
#调用时,3种方式。
1
)
describe_pet
(
pet_name
=
'willie'
)
2
)
describe_pet
(
'willie'
)
3
)
describe_pet
(
pet_name
=
'harry'
,
animal_type
=
'hamster'
)
4
)
describe_pet
(
'harry'
,
'hamster'
)
4、传递任意数量的实参
python允许函数从调用语句中收集任意数量的实参。
将实参封装到一个元组中。
def
make_pizza
(
*
toppings
)
:
print
(
toppings
)
make_pizza
(
'pepperoni'
)
#输出: ('pepperoni',)
make_pizza
(
'pepperoni'
,
'green peppers'
,
'extra cheese'
)
#输出: ('pepperoni', 'green peppers', 'extra cheese')
5、结合使用位置实参和任意数量实参
如果要让函数接收不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。
def
make_pizza
(
size
,
*
toppings
)
:
#调用时
make_pizza
(
16
,
'pepperoni'
)
make_pizza
(
12
,
' mushrooms'
,
'green peppers'
,
'extra cheese'
)
6、将函数存储在模块中
在
pizza.py
中,
def make_pizza(size, *toppings):
在
making_pizzas.py
中,
import
pizza
pizza
.
make_pizza
(
16
,
'peppperoni'
)
7、导入特定的函数
-
from module_name import function_name
。例如,from pizza import make_pizza
-
通过用逗号分隔函数名,从模块中导入任意数量的函数:
from module_name import function_0, function_1, function_2
8、使用as给函数指定别名
如果要导入的函数的名称可能与程序中现有的名称冲突,或者函数的名称太长,可指定简短而独一无二的别名。
指定别名的通用语法如下:
from module_name import function_name as fn
例如给函数make_pizza()指定别名mp()。
from pizza import make_pizza() as mp
9、使用as给模块指定别名
给模块指定别名的通用语法如下:
import module_name as mn
例如给模块pizza指定别名p。
import pizza as p
10、导入模块中的所有函数
from module_name import *
第9章:类
1、创建类:
根据类来创建对象被称为
实例化
。
#dog.py
class
Dog
(
)
:
def
__init__
(
self
,
name
,
age
)
:
self
.
name
=
name
self
.
age
=
age
def
sit
(
self
)
:
print
(
self
.
name
.
title
(
)
+
" is now sitting."
)
def
roll_over
(
self
)
:
print
(
self
.
name
.
title
+
" rolled over."
)
dog
=
Dog
(
'pitte'
,
16
)
print
(
dog
.
name
+
", "
+
str
(
dog
.
age
)
)
方法
__init__()
是一个特殊的方法。开头和末尾各有两个下划线,这是一种约定,避免python默认方法与普通方法发生名称冲突。
其中形参self必不可少,还必须位于其它形参的前面。
python调用这个__init__()方法来创建类实例时,将自动传入实参self,每个与类相关联的方法调用都自动传递实参self,它是一个指向实例本身的引用,让实例能够访问类中的属性和方法。
2、继承
子类继承父类的所有属性和方法,同时还可以定义自己的属性和方法。
class
Car
(
)
:
.
.
.
class
ElectricCar
(
Car
)
:
def
__init__
(
self
,
make
,
model
,
year
)
:
super
(
)
.
__init__
(
make
,
model
,
year
)
my_tesla
=
ElectricCar
(
'tesla'
,
'model s'
,
2016
)
创建子类时,父类必须包含在当前文件中,且位于子类前面。定义子类时,必须在括号内指定父类的名称。方法__init__()接收Car实例所需的信息。
super()是一个特殊函数,帮助python将父类和子类关联起来。
3、导入类
from car import Car
from car import Car, ElectricCar
import car
第10章:文件和异常
1、读取整个文件
file_path
=
r
'C:\Users\lenovo\Desktop\filename.txt'
with
open
(
file_path
)
as
file_object
:
contents
=
file_object
.
read
(
)
print
(
contents
)
注:
在使用绝对路径时,运行时可能会出现报错,
SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: tr
,引起这个错误的原因就是转义问题。
3种解决方法:
-
1)在路径前面加r,即保持字符原始值的意思。
file_path = r'C:\Users\lenovo\Desktop\filename.txt'
-
2)替换为双反斜杠。
file_path = 'C:\\Users\\lenovo\\Desktop\\filename.txt'
-
3)替换为正斜杠。
file_path = 'C:/Users/lenovo/Desktop/filename.txt'
2、逐行读取
file_path
=
r
'C:\Users\lenovo\Desktop\filename.txt'
with
open
(
file_path
)
as
file_object
:
for
line
in
file_object
:
print
(
line
)
3、写入空文件
file_path
=
r
'C:\Users\lenovo\Desktop\filename.txt'
with
open
(
file_path
,
'w'
)
as
file_object
:
file_object
.
write
(
"I love herbin."
)
调用open()时提供了两个实参。第一个实参为要打开的文件的名称,第二个实参(‘w’)指要以
写入
模式打开这个文件。
(‘w’)模式打开文件后清空再写入。
可使用
‘a’
将内容添加到文件末尾,而不是覆盖文件原始内容。
只能将字符串写入文本文件。若要将数据存储到文本文件中,必须先使用函数str()将其转换为字符串格式。
- 读取模式(‘r’)
- 写入模式(‘w’)
- 附加模式(‘a’)
- 读取和写入文件的模式(‘r+’)
4、异常
使用try-except代码块处理。
将可能引发异常的代码放在try语句中。
1)使用try-except代码块
try
:
print
(
5
/
0
)
except
:
print
(
"error."
)
2)else代码块
try
:
answer
=
int
(
first_num
)
/
int
(
second_num
)
except
:
print
(
"error."
)
else
:
print
(
answer
)
可在except: 中加入pass,出现异常时什么都不做。
5、存储数据
1)使用json.dump()和json.load()来存储数字列表:
import
json
numbers
=
[
2
,
3
,
5
,
7
,
11
,
13
]
filename
=
'numbers.json'
with
open
(
filename
,
'w'
)
as
f_obj
:
json
.
dump
(
numbers
,
f_obj
)
使用json.load()将这个列表读取到内存中:
with
open
(
filename
)
as
f_obj
:
numbers
=
json
.
load
(
f_obj
)