Python编程从入门到实践
2022年研一寒假与小丁同学一起学习了[美]埃里克·马瑟斯著写,袁国忠翻译的《Python编程从入门到实践》,想记录一下。这篇文章适合阅读完此书后,一些知识比较混乱的时候看看,后期会出思维导图版。
第二章 变量和简单数据类型
一 变量赋值与打印
name = '小丁同学'
print("你好"+" 这是一行代码")
print("我喜欢"+name) # name为变量 print('我喜欢{name}')
like = f "我喜欢{name}" #变量 = f"{变量}"
二 大小写(不改变原来的):
.title() 首字母大写
.upper() 全大写
.lower() 全小写
三 删除空白:
.lstrip() 首
.rstrip() 尾
.strip() 两边
第三章 列表简介
一 方法与函数在定义上的区别
名.abc() 方法
abc(名) 函数
二 定义列表:
1. 名称s = ['', '', ······] # 列表名称尽量用复数
2. 名称s[i] # i从0开始
三 在列表上进行 修改、添加、删除:
3. 名称[i] = '' # 修改指定位置元素
4. 名称.append('') # 尾加
5. 名称.insert(i,'') # 按位加
6. del 名称[i] # 按位删
7. 名称.pop() # 弹出顶端元素
8. 名称.pop(i) # 按位弹 (名称 = 名称.pop(i)弹出并保留)
9. 名称.remove('') # 按值删 (只删除一个特定值)
四 对列表排序:
1. 名.sort() # 永按序排 (不能放在print中(一个过程))
2. 名.sort(reverse = True)# 永按序反排 (不能放在print中(一个过程))
3. sorted(名) # 暂时按序排
4. sorted(名, reverse = True)# 暂时按序反排
5. 名.reverse() # 颠倒列表(永久) (不能放到print中,2次变回原样)
6. len(名) # 确定长度(记数从1开始) len(字符串)、len(' ') len(6)报错
第四章 操作列表
一 傻瓜式遍历
for 遍历整个列表:
for food in foods:
print(food) # pyhton解释器根据缩进来读代码与垂直空行无关
二 数值列表:
函数range(i,j,k) #i始,j终(截止到j-1),k步长。 无i从0起,无j到终点,-1为最后一个
min()
max()
sum()
list(range(1,6)-转成列表
squars=[value**2 for value in range(1,11)] #列表解析
三 截取列表部分:
1. players[0:3] #切片 [0:] 到末尾, [-3:] 后三
2. 新名=名[:] #复制列表
3. 新名=名 #共同指向一个列表 名:首地址
四 改变不了的列表——元组:
players = ('','') #不可变,但可重新赋值
第五章 if语句
一 等号的使用方法
'='赋值 '=='相等运算符 '!='不等运算符
二 优先级
not > and > or #非>与>或 可多个并列使用
三 条件的新方式
检查特定值是否包含在列表: '特定值' in 列表 #不在not in
四 if条件(一个if下输出一个):
if条件:
else:
if条件:
elif条件:
else:
if条件:
if条件:
第六章 字典
一 定义字典
aline_0 = {'键'='值', '键'='值'} #可跨行定义字典
二 对字典进行访问以及修改
1. 访问: aline_0['键'] #通过键获取相对应的值
2. 添加键值对: aline_0['键']='值' #按序往里添加
3. 修改值: aline_0['键']='' #按定键进行修改
4. 删: del aline_0['键']
aline_0.get('键','空时返回的消息') #用方法get访问空键不报错
三 寻找独一无二的元素
让Python找出列表中独一无二的元素,并使用这些元素创建一个集合: 函数set() #无序、独一无二
四 遍历
1. 键值对.items(): for key, value in user_0.items():
2. 键.keys: for key in user_0.keys():
3. 值.value: for value in user_0.value():
五 嵌套
列表嵌套字典 .append() #压入列表 for aline_number in range(30) 循环30次
字典嵌列表 #将值定义为列表
字典嵌字典 #将值定以为字典
注意: 键不可用列表(可变),可用元组(不可变)
第七章 用户输入和while循环
一 输出函数input()
作用: 提示用户输入一些文本,再将这些文本呈现给用户。举例如下:
message = input('提示词')
print(message)
二 函数int()
作用: input()返回的是一个字符串类型文本,有时需要将返回的文本用作比较的数据,int()可将字符串类型转换成整型。
三 求模运算符%
作用: 两数相除返回余数
4 % 3 返回1
四 while循环
作用: for循环适合傻瓜式循环所有,而while可以有条件的循环,可以控制结束。
格式:
while 条件:
执行
五 死循环
while True
六 退出的循环条件
1. 使用标志退出循环:
作用: 可以在循环前定义一个标志(一遍将True赋给某个变量)作为循环条件,通过改变这个标志进而控制循环结束。
eg:
active = True
while active:
message = input(prompt)
if message == 'quit':
active = False
else:
print(message)
2.break与continue: break是跳出并结束本层循环,continue是跳出本次循环,并继续下一次循环。
注:空列表可做循环结束条件。
第八章 函数
一 定义函数:
def 函数名(形参):
函数体
二 调用函数:
函数名(实参)
三 实参与形参: 实参与形参的关系有点像变量赋值,将实参赋给变量形参,再通过函数体进行一些列操作.当然,函数体内的变量为形参。
四 四种传递实参方式: 函数调用时,Python
1. 位置实参: 实参与形参基于位置关联(顺序很重要)。
def describe_pet(animal_type, pet_name):
print(f"My {animal_type}'s name is {pet_name.title()}.")
describe_pet('hamster', 'harry')
2. 关键字实参:传递给函数的名称值对,顺序无关紧要。
def describe_pet(animal_type, pet_name):
print(f"My {animal_type}'s name is {pet_name.title()}.")
describe_pet(pet_name='harry', animal_type='hamster')
3. 默认值: 编写函数时,可给每个形参指定默认值。在调用函数中给形参提供实参时,Python将使用指定的实参值,否则,使用形参的默认值,具有单个默认值一般可以放到形参中最后一个。
4. 位置实参、关键字实参、默认值可以混合使用。
五 返回值
函数可以返回任何类型的值,包括列表和字典等教复杂的数据结构。
六 函数可以直传递列表,并直接修改列表。若不想原列表被修改,可以用切片([:])传递复制版本。
七 传递任意数量的实参
1. 将形参定义为(*名字),Python创建一个空元祖。可以接收任意数量的实参,并存储到这个元组中。
2. 将形参定义为(**名字),Python创建一个空字典,可以接收任意数量的字典形式的实参,并存储到这个字典中。
注:Python运行程序是一行一行运行,而不是一个实参一个实参的运行函数体。
八 将函数存储在模块中: 可以将函数封装到一个文件中(例如:pizza.py)
九 导入函数:
1. 导入整个模块:
import pizza # from pizza import*
pizza.make_pizza(实参)
2. 导入特定函数:
from module_name import 函数1,函数2,函数3......
3. 用as给模块指定别名
import pizza as p
第九章 类
一 创建Dog类
class Dog: # 类的首字母名字大写
'''说明此类干什么'''
def __init__(self, name, age): # 类中函数成为方法。 self是与实例建立起联系。 初始化约定俗成格式。
'''初始化说明'''
self.name = name # 属性。将传入的参数赋予给实例。 可以通过实例直接访问:实例.name。 可以直接给属性默认值:self.name = 'Li'
self.age = age
def sit(self):
'''方法说明'''
二 访问属性以及调用
实例.name
my_dog = Dog('Willie', 6) # 调用类Dog,传入两个参数,并赋给my_dog
my_dog.name # 可类比函数
my_dog.sit()
三 修改属性的值
1. 直接: 实例.name = 'Wang'
2. 通过方法修改属性的值:
def updata_odometer(self, mileage):
'''方法说明'''
self.odometer_reading = mileage
my_new_car.updata_odometer(23)
3. 通过方法进行递增
self.odometer_reading += mileage
四 继承(父亲必须在当前文件中)
def __init__(self.make,model,year):
super().__init__(make, model, year):
新属性
五 重写父类的方法(即父类与子类方法同名时,优先子类)
六 可以在类中调用另外一个类
七 导入类
八 标准库