第一章
import this
第二章2.4
strip: 用来去除头尾字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
lstrip:用来去除开头字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
rstrip:用来去除结尾字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
.title() 所有单词的首个字母转化为大写
Python使用两个乘号表示乘方运算 3 ** 2 = 9
字符串中使用整数时,需要指出你希望python将这个整数用作字符串可使用str(),将非字符串表示为字符串
注释
注释用#标识
第3章 列表
--列表用[]表示列表
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
输出
print(bicycles) 打印所有
print(bicycles[0]) 返回第一个
bicycles[-1] 返回最后一个
修改
bicycles[0] = 'ducati' 修改第一个值
添加
bicycles.append('ducati') 在列表末尾添加元素
bicycles.insert(0, 'ducati') 在索引0处添加空间,将值存储到这个地方,已有的元素右移一位
删除
del bicycles[0] 删除了列表bicycles 中的第一个元素——'honda'
ss = bicycles.pop() 弹出列表最后一个值,并且拿到弹出的值
bicycles.pop(1) 弹出索引为1的元素
bicycles.remove('trek')
不知道要从列表中删除的值所处的位置,如果只知道要删除的元素的值,可使用remove()
remove()只删除第一个指定的值,如果删除的值在列表中出现多次,就需要使用循环来判断师傅删除所有
--列表排序
永久排序sort()
cars = ['bmw', 'audi', 'toyota', 'subaru'] cars.sort()
['audi', 'bmw', 'subaru', 'toyota'] 按字母顺序排序
cars.sort(reverse=True) 反向排序
临时排序sorted(cars)
反转排列顺序永久性修改 cars.reverse()
获取列表长度 len(cars)
第4章 遍历列表
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician
创建数值列表
for value in range(1,6):
print(value)
--1 2 3 4
使用range()创建数值列表
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]
❶ squares = []
❷ for value in range(1,11):
❸ square = value**2
❹ squares.append(square)
❺ print(squares)
最大最小求和
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits) 0
>>> max(digits) 9
>>> sum(digits) 45
--切片 【索引 包前不包后】
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3]) 0-3 这将输出 0、1、2的元素
['charles', 'martina', 'michael']
print(players[1:4]) 提取2-4个元素
['martina', 'michael', 'florence']
如果没有指定开始自动从列表开头开始
players[:4]
如果要提取从第3个元素到列表末尾的所有元素,可将起始索引指定为2 ,并省略终止索引:
print(players[2:])
['michael', 'florence', 'eli']
打印最后三个
print(players[-3:])
遍历切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:")
for player in players[:3]:
print(player.title())
>>> Charles Martina Michael
复制列表 [:]
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
4.5元组
列表适合用于存储在程序运行期间可能变化的数据集,列表是可以修改的
元组适合用于一系列不可以修改的元素,元组是不可变的,不可变的列表成为元组
--定义元组
dimensions = (200,50)
print(dimensions[0])
print(dimensions[1])
修改元组【会报错】
dimensions = (200, 50)
dimensions[0] = 250
Traceback (most recent call last): File "dimensions.py", line 3, in <module> dimensions[0] = 250TypeError: 'tuple' object does not support item assignment
遍历元组
dimensions = (200, 50)for dimension in dimensions:
print(dimension)
修改元组中的元素是不合法的
但是修改元组变量是可以的
dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)
dimensions = (400, 100)
print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)
第五章 if语句
简单示例1
cars = ['audi', 'bmw', 'subaru', 'toyota']
for car in cars:
if car == 'bmw':
print(car.upper())
else:
print(car.title())
知识点:在python中检查是否相等时区分大小写
知识点:and 与 or
age_0 >= 21 and age_1 >= 21
age_0 >= 21 or age_1 >= 21
知识点:检查特定值是否包含在列表中
requested_toppings = ['mushrooms', 'onions', 'pineapple']
'mushrooms' in requested_toppings
第六章 字典
alien_0 = {'color': 'green', 'points': 5}
print(alien_0['color'])
>>>green
创建一个空字典
alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
>>>{'color': 'green', 'points': 5}
修改字典中的值
alien_0['color'] = 'yellow'
删除键值对
del alien_0['points']
遍历字典
user_0 = { 'username': 'efermi', 'first': 'enrico', 'last': 'fermi', }❶
for key, value in user_0.items():
print("\nKey: " + key)
print("Value: " + value)
注意:无序
for name, language in favorite_languages.items():❷
print(name.title() + "'s favorite language is " + language.title() + ".")
name = key
language = value
只遍历字典中的键
for name in favorite_languages.keys():
print(name.title())
按顺序遍历字典中的所有值
for name in sorted(favorite_languages.keys()):
print(name.title() + ", thank you for taking the poll.")
只返回字典中的所有制
for language in favorite_languages.values():
print(language.title()
第7章 用户输入和while循环
input()函数:让程序暂停运行,等待用户输入一些文本,获取用户输入后,Python将其存储在一个变量中,以方便使用
message = input("Tell me something, and I will repeat it back to you: ")
print(message)
Tell me something, and I will repeat it back to you: Hello everyone!
Hello everyone!
使用函数input()来获取数值输入
while循环简介
current_number = 1
while current_number <= 5:
print(current_number)
current_number += 1
>>>1 2 3 4 5
判断退出
message = ""
while message != 'quit':
message = input(prompt)
if message != 'quit':
print(message)
标志退出
active = True
while active:
message = input(prompt)
if message == 'quit':
active = False
else:
print(message)
break退出循环
while True:
city = input(prompt)
if city == 'quit':
break
else:
print("I'd love to go to " + city.title() + "!")
continue的使用跳过当前循环
current_number = 0
while current_number < 10:
current_number += 1
if current_number % 2 == 0:
continue
print(current_number)
第8章 函数
定义函数
def greet_user(username):
"""显示简单的问候语"""
print("Hello!"+username.title())
greet_user()
形参默认值 等号两边不要有空格
def describe_pet(pet_name, animal_type='dog'):
其他方式的函数调用
# 一条名为Willie的小狗
describe_pet('willie')
describe_pet(pet_name='willie')
# 一只名为Harry的仓鼠
describe_pet('harry', 'hamster')
describe_pet(pet_name='harry', animal_type='hamster')
describe_pet(animal_type='hamster', pet_name='harry')
返回值
def get_formatted_name(first_name, last_name):
"""返回整洁的姓名"""
full_name = first_name + ' ' + last_name
return full_name.title()
musician = get_formatted_name('jimi', 'hendrix')
print(musician)
传递任意数量的实参 形参*toppings中的星号让PythonPython创建一个名为topping的空元组
def make_pizza(*toppings):
"""打印顾客点的所有配料"""
print(toppings)
make_pizza('pepperoni')
make_pizza('mushrooms', 'green peppers', 'extra cheese')
导入模块
import pizza
导入模块中特定的函数
from module_name import function_0, function_1, function_2
使用as给函数指定别名
from pizza import make_pizza as mp
使用as给模块指定别名
import pizza as p
导入模块中的所有函数
from pizza import *
第9章 创建和使用类
创建类
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!")
方法__init__()定义成了包含三个形参,self name 和 age 。在这个方法的定义中,形参self必不可少
还必须位于其他形参的前面,为何必须在方法中定义包含形参self呐?
中间没有做笔记
9.4.5 导入模块中的所有类
不推荐使用这种导入方式,不知道导入了哪些类,不知道导入的类中是否有和本类冲突的类
from module_name import *
from collections import OrderedDict
9.5 Python标准库
创建一个空的有序字典
from collections import OrderedDict
favorite_languages = OrderedDict()
favorite_languages['jen'] = 'python'
favorite_languages['sarah'] = 'c'
favorite_languages['edward'] = 'ruby'
favorite_languages['phil'] = 'python'
for name, language in favorite_languages.items():
print(name.title() + "'s favorite language is " +language.title() + ".")
这是一个很不错的类,它兼具列表和字典的主要优点(在将信息关联起来的同时保留原来的顺序)。
代码风格:即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线
第10章
10.1 读取文件
读取整个文件
with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents)
关键字with 在不再需要访问文件后将其关闭
相比于原始文件,该输出唯一不同的地方是末尾多了一个空行,read()到达文件末尾时返回一个空字符串,而将这个字符串显示出来时
就是一个空行,要删除多出来的空行,可以在print语句可以用 rstrip:用来去除结尾字符、空白符
with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents.rstrip())
逐行读取
filename = 'pi_digits.txt'
with open(filename) as file_object:
for line in file_object:
print(line)
3.1415926535
8979323846
2643383279
逐行读取发现空白行更多了,?因为在这个文件中,每行的末尾都有一个看不见的换行符
--创建一个包含文件各行内容的列表
filename = 'pi_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
for line in lines:
print(line.rstrip())
10.2 写入文件
filename = 'programming.txt'
with open(filename, 'w') as file_object:
file_object.write("I love programming.")
指定读取模式 读取模式 ('r' )、写入模式 ('w' )、附加模式 ('a' )、读加写的模式('r+' )
如果你省略了模式实参,Python将以默认的只读模式打 开文件。
只能字符串写入。要将数值数据必须先使用函数str() 将其转换为字符串格式
写入多行
write() 不会在你写入的文本末尾添加换行符,两行内容挤在一起
如果要换行,需要在结尾加上 file_object.write("I love creating new games.\n")
附加内容。
with open(filename, 'a') as file_object:
不会在返回文件对象前清空文件
写入到文件的行都将添加 到文件末尾。如果指定的文件不存在,Python将为你创建一个空文件。
【异常】
try:
print(5/0)
except ZeroDivisionError:
print("You can't divide by zero!")
else:
print("执行成功")
依赖于try 代码块成功执行的代码都放在else 代码块中;在这个示例中,如 果除法运算成功,我们就使用else 代码块来打印结果
filename = 'alice.txt'
try:
with open(filename) as f_obj:
contents = f_obj.read()
except FileNotFoundError:
msg = "Sorry, the file " + filename + " does not exist."
print(msg)
发生异常的时候让python一声不吭
在except中使用pass 可在代码块中使用它来让Python 什么都不要做
【分析文本】
【存储数据】
使用json.dump()和jsonjson.load()
使用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)
读取数据
import json
filename = 'numbers.json'
with open(filename) as f_obj:
numbers = json.load(f_obj)
print(numbers)
第11章 测试代码
import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
"""测试name_function.py"""
def test_first_last_name(self):
"""能够正确地处理像Janis Joplin这样的姓名吗?""" ❷
formatted_name = get_formatted_name('janis', 'joplin') ❸
self.assertEqual(formatted_name, 'Janis Joplin')
unittest.main()