学习python的过程中整理出来的一些笔记,把书上知识点和一些代码精简出来了,由于书是外文翻译过来的,有些语句重新用自己的话组织了一下,更符合国人的阅读习惯,看起来更清晰明白,无偿分享给大家一起交流学习。
Python编程:从入门到实践 学习笔记
CHAP 1 配置环境
配置开发环境,按照书上安装即可。编辑器我用的和书上不太一样,用的是Pycharm,代码清晰,用着也很顺手。各个编辑器基本大同小异,挑自己用的顺手的就行。
CHAP 2 变量和简单数据类型
字符串:用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号
以首字母大写的方式显示每个单词:title()
字符串改为全部大写:upper()
字符串改为全部小写:lower()
如:
name = "Ada Lovelace"
print(name.title())
print(name.upper())
print(name.lower())
合并(拼接)字符串:"+"
删除空白
剔除字符串开头的空白:lstrip()
剔除字符串末尾的空白:rstrip()
同时剔除字符串两端的空白:strip()
注:这种删除只是暂时的,接下来再次询问favorite_language 的值时,你会发现这个字符串与输入时一样,依然包含多余的空白。
要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量。
>>> favorite_language = 'python ' ❶
>>> favorite_language = favorite_language.rstrip()
>>> favorite_language
'python'
使用函数str() 避免类型错误:可调用函数str() ,它让Python将非字符串值表示为字符串
注释:在Python中,注释用井号(# )标识
CHAP 3 列表
列表:在Python中,用方括号([] )来表示列表,并用逗号来分隔其中的元素。
如:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)
输出:
['trek', 'cannondale', 'redline', 'specialized']
索引指定为-1 ,可让Python返回最后一个列表元素,索引-2 返回倒数第二个列表元素,索引-3 返回倒数第三个列表元素,以此类推。
bicycle[-1]…
添加元素:
在列表末尾添加元素:方法append() 如:motorcycles.append('ducati')
在列表的任何位置添加新元素:insert() 如:motorcycles.insert(0, 'ducati')
删除元素:
1.使用del 可删除任何位置处的列表元素: 如:
del motorcycles[0]
2.使用pop() 来删除列表中任何位置的元素,并返回被删除的元素的值:popped_motorcycle = motorcycles.pop()
【( )内为空默认删除最后一个元素】
3.根据值删除元素 使用方法remove() 如:motorcycles.remove(‘ducati’)
注意:方法remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。
组织列表(排序)
使用方法sort() 对列表进行永久性排序:
1.永久性地修改了列表元素的排列顺序,按字母顺序排列:方法sort() 如:cars.sort()
2.按与字母顺序相反的顺序排列:向sort() 方法传递参数reverse=True 如:cars.sort(reverse=True)
使用函数sorted() 对列表进行临时排序:
按特定顺序显示列表元素,但不影响它们在列表中的原始排列顺序:可使用函数sorted() 如:print(sorted(cars))
按与字母顺序相反的顺序显示列表:向函数sorted() 传递参数reverse=True 如:print(sorted(cars,reverse=True))
反转列表元素的排列顺序:方法reverse() 如:cars.reverse()
确定列表的长度:函数len() 如:len(cars)
注意:Python计算列表元素数时从1开始,因此确定列表长度时,一般不会遇到差一错误。
CHAP 4 对列表进行操作
1、遍历整个列表:可使用Python中的for循环
如:
magicians = ['alice', 'david', 'carolina']
for magician in magicians: # 注意不要遗漏冒号
print(magician)
注:每个缩进的代码行都是循环的一部分,在for循环后面,没有缩进的代码都只执行一次
2、函数range() :能够轻松地生成一系列的数字
如:
for value in range(1,5):
print(value)
输出:
1
2
3
4
注意:python从你指定的第一个值开始数,并在到达你指定的第二个值后停止,因此输出不包含第二个值
3、使用range() 创建数字列表:
可使用函数list() 将range() 的结果直接转换为列表,如果将range() 作为list() 的参数,输出将为一个数字列表。
如:
numbers = list(range(1,6))
print(numbers)
输出:
[1, 2, 3, 4, 5]
使用函数range() 时,还可指定步长。
even_numbers = list(range(2,11,2))
print(even_numbers)
输出:[2, 4, 6, 8, 10]
4、创建一个列表,其中包含前10个整数(即1~10)的平方:
squares = []
for value in range(1,11):
squares.append(value**2)
print(squares)
输出:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
列表解析:
squares = [value**2 for value in range(1,11)]
print(squares)
#以上两段代码结果相同
首先指定一个描述性的列表名【squares】,并定义一个表达式【value2】,用于生成要存储到列表中的值,
接下来,编写一个for 循环【for value in range(1,11) 】,用于给表达式提供值。
在这个示例中,for循环为for value in range(1,11),它将值1~10提供给表达式value2 。
请注意,这里的for 语句末尾没有冒号。
5、找出数字列表的最大值、最小值和总和:
>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits): 最大值
0
>>> max(digits): 最小值
9
>>> sum(digits): 求总和
45
6、切片:处理列表的部分元素
可指定要使用的第一个元素和最后一个元素的索引
如:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3]) //指定索引0~3,这将输出分别为0 、1 和2 的元素。
输出:
['charles', 'martina', 'michael']
注意:与函数range() 一样,Python在到达指定的第二个索引前面的元素后停止。
若没有指定第一个索引,Python将自动从列表开头开始
如:print(players[:4])
要让切片终止于列表末尾,可省略终止索引
如:print(players[2:])
负数索引返回离列表末尾相应距离的元素,因此可以输出列表末尾的任何切片。
如:print(players[-3:])
7、遍历列表的部分元素:可在for 循环中使用切片
如:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
for player in players[:3]:
print(player.title())
输出:
Charles
Martina
Michael
8、复制列表:同时省略起始索引和终止索引([:])
如:
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
9、元组:不可变的列表 //使用圆括号来标识,定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。
如:
dimensions = (200, 50)
print(dimensions[0])
print(dimensions[1])
注:如果要修改元组中元素的值,需重新定义整个元组。
格式设置指南:
1.PEP 8建议每级缩进都使用四个空格
2.在编写代码时应该使用制表符键,但一定要对编辑器进行设置,使其在文档中插入空格而不是制表符。
2.建议使用79字符的标准行长,PEP 8还建议注释的行长都不超过72字符
CHAP 5 If语句
1、If 语句
cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:
if car == 'bmw':
print(car.upper())
else:
print(car.title())
注:if语句中也用缩进量来表示段间逻辑。
2、同时检查多个条件:关键字and和or
>>> age_0 >= 21 and age_1 >= 21
>>> (age_0 >= 21) and (age_1 >= 21)
#为改善可读性,可将每个测试都分别放在一对括号内
3、判断特定的值包含在列表中:可使用关键字in
如:
>>> requested_toppings = ['mushrooms', 'onions', 'pineapple']
>>> 'mushrooms' in requested_toppings
True
>>> 'pepperoni' in requested_toppings
False
判断特定值不包含在列表中:not in
4、if-elif-else 结构 //可根据需要使用任意数量的elif 代码块
如:
age = 12
if age < 4:
print("Your admission cost is $0.")
elif age < 18:
print("Your admission cost is $5.")
else:
print("Your admission cost is $10.")
注:Python并不要求if-elif 结构后面必须有else 代码块,如果知道最终要测试的条件,应考虑使用一个elif 代码块来代替else 代码块。
如:
age = 12
if age < 4:
price = 0
elif age < 18:
price = 5
elif age < 65:
price = 10
elif age >= 65:
price = 5
print("Your admission cost is $" + str(price) + ".")
注:如果只想执行一个代码块,就使用if-elif-else 结构;如果要运行多个代码块,就使用一系列独立的if 语句。
5、确定列表非空
requested_toppings = []
if requested_toppings: //在运行for 循环前确定列表是否为空很重要
for requested_topping in requested_toppings:
print("Adding " + requested_topping + ".")
print("\nFinished making your pizza!")
else:
print("Are you sure you want a plain pizza?")