阅读时间:
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)
来源:oschina
链接:https://my.oschina.net/u/4326655/blog/3209976