阅读时间:
2019.08.25----2019.08.30:第一部分 基础知识。
1、变量的命名和使用
2、字符串
用引号括起来的都是字符串,其中的引号可以是单引号,也可以是双引号。可以在字符串中包含引号和撇号。
name.title()
name.upper()
name.lower()
.rstrip()
(删除末尾)这种删除只是暂时的要想永久删除这个字符串的空白,必须将删除操作的结果存回到变量中;.lstrip()
删除开头的空白;strip()
同时删除字符串两端的空白。列表是一系列按特定顺序排列的元素组成。可包含字母、数字等,元素之间可以没有任何关系。用[]
来表示列表,并用逗号分隔其中的元素。
bicycles = ['trek', 'cannondale', 'redline']
使用print()打印出来时包含[]
1、访问列表元素
索引从0开始而不是1,Python可以通过索引-1
直接访问最后一个列表元素。
2、在列表中添加元素
.append('China')
insert()
,可在任何位置添加新元素,因此需要指定新元素的索引和值。moto.insert(0,'ducati')
3、从列表中删除元素
del moto[0]
moto.pop()
moto.pop(0)
moto.remove('ducati')
,删除掉ducati,只删除掉第一个指定的值。若删除的值出现多次,需使用循环判断。4、组织列表
cars.sort()
,永久性修改了列表元素的排列顺序。cars.sort(reverse=True)
进行逆向排序。sorted(cars,reverse=True)
cars.reverse()
。不是按与字母相反的顺序排列列表元素,而只是反转列表元素的排列顺序。reverse()为永久性修改。len(cars)
。Python计算列表元素时从1开始。1、for循环
cars = ['bmw', 'audi', 'toyota', 'subaru']
for car in cars:
print(car)
2、创建数字列表
range(1,5)
,打印出1~4。numbers = list(range(1,5))
。函数range()还可指定步长,例如range(2,11,2)
,从2开始,不断加2,直到达到或超过终止11。max(digits)、min(digits)、sum(digits)
3、使用列表的一部分
cars[0:3]
,打印0、1、2这3个元素;若没有指定第一个索引,将从列表开头开始,cars[:3]
。类似的,指定第一个索引,一直到最后,cars[1:]
new_cars = cars[:]
4、元组
列表是可修改可变化的数据集。不可变的列表被称为元组,元组使用圆括号
dimensions = (200, 50)
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.
字典是一系列键-值对。可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。字典用放在==花括号{}==中的一系列键-值对表示。
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',
},
}
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循环来处理列表和字典
while 'cat' in pets:
pets.remove('cat')
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 *
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
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种解决方法:
file_path = r'C:\Users\lenovo\Desktop\filename.txt'
file_path = 'C:\\Users\\lenovo\\Desktop\\filename.txt'
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()将其转换为字符串格式。
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)