一、字符串操作
s = ' Kitty '
s.title() #首字母大写
s.upper() #全大写
s.lower() #全小写
s.lstrip() #去除左边空白
s.rstrip() #去除右边空白
s.strip() #去除两端空白
str(5) #将整数5转换成字符串
int('21') #将字符串'21'转换成整数
if 'k' in s: #判断字符串是否包含用in
print('k is in word '+s)
s.replace('K','k') #替换字符串中的K为k
s.count('tt') #统计字符串中tt出现的次数
s.split('t') #分隔字符串成列表
二、列表操作
1、列表元素
arrays=['lily','tom','alice']
arrays[-1] #取列表最后一个元素
arrays[-2] #取列表倒数第二个元素
arrays[-3] #取列表倒数第三个元素
arrays[0]='tick' #修改元素
arrays.append('linda') #末尾追加元素
arrays.insert(0,'teddy') #指定索引添加元素
del arrays[0] #指定索引删除元素
arrays.pop() #删除末尾元素并可得到它
arrays.pop(0) #指定索引删除元素并可得到它
arrays.remove('tom') #根据值删除元素
len(arrays) #列表长度
if 'lily' in arrays: #列表判断元素存在
print('lily is coming')
if 'lily' not in arrays: #列表判断元素不存在
print('lily is not coming')
2、列表排序
arrays.sort() #对列表永久性排序
arrays.sort(reverse=True) #对列表永久性反序
arrays.reverse() #倒序永久性,再次reverse()恢复
sorted(arrays) #临时排序
3、遍历列表
for arr in arrays:
print(arr)
print(arr+'again') #这一行与上一行缩进表示在循环内
print('end') #不缩进表示循环结束
4、数值列表
range(1,5) #结果为1,2,3,4
range(2,11,2) #2~11内的偶数,指定起始和步长
digits=[1,2,3,4,5,6,7,8,9,0]
min(digits)
max(digits)
sum(digits)
5、列表解析
将for循环和创建元素合并,并自动附加元素。
squares=[value**2 for value in range(1,11)]
print(squares)
6、切片
squares = [1,4,9,16,25,36]
squares[0:3] #列表前3个元素
squares[:4] #从头
squares[2:] #至尾
squares[-3:] #最后三个元素
squares[:] #整个列表
squares_2=squares[:] #利用切片复制列表,不同列表
squares_2=squares #指向同一列表
7、元组
dimensions=(200,50) #元素元素不可修改
三、字典操作
在Python中,字典是一系列键值对,任何Python对象都可以作为字典的值。
alient_0={'color':'green', 'points':5}
print(alient_0['color'])
print(alient_0['points'])
字典是动态结构,可随时添加键值对
alient_0['x_position']=0
alient_0['y_position']=25
print(alient_0)
修改字典值
client_0['color']='yellow'
删除键值对
del alient_0['points']
遍历字典
for key,value in alient_0.items():
print(key)
print(value)
遍历键
for key in alient_0.keys():
print(key)
遍历值(使用集合set去重)
for value in set(alient_0.values()):
print(value)
字典列表(字典组成的列表)
alient_0={'color':'green', 'points':5}
alient_1={'color':'yellow', 'points':10}
alient_2={'color':'red', 'points':15}
alients=[alient_0,alient_1,alient_2]
字典包含列表
pizza={
'crust':'thick',
'toppings':['mushrooms','cheese']
}
字典中存储字典
users={
'aeistein':{
'first':'albert',
'last':'eistein'
},
'mcurie':{
'first':'marie',
'last':'curie'
}
}
四、if判断和while循环
1、if判断
num = 8
if num == 8:
print('The number is eight.')
elif num > 8:
print('The number is greater than eight.')
else:
print('The number is less than eight.')
2、while循环
num=1
while num<=5:
print(num)
num += 1
if num==3:
break
1)在Python循环中都可以使用break终止循环,continue进入下一次循环。
2)for循环中不能修改列表,while循环中可以修改列表。
五、用户输入
函数input()让程序暂停运行,等待用户输入一些文本,获取用户输入后,Python将其存入一个变量。
六、函数
1、定义函数
def greet_user():
print('hello')
def greet_user(username):
print('hello,'+username)
2、实参和形参
1)传递实参方式:
位置实参(按参数顺序);
关键字实参(指定形参名);
默认值;
2)传递任意数量的实参:
在参数前面加一个*,代表创建了一个空元组,并将收到的所有值都封装到元组中。
def make_pizza(*toppings):
print(toppings)
在参数前面加两个*,代表创建了一个空字典,并将收到的所有键值都封装到字典中。
def build_profile(name,**user_info):
print(name)
3)结合使用位置实参和任意数量实参,将接纳任意数量的形参放在最后。
def make_pizza(size,*toppings):
print(toppings)
3、函数返回值
返回简单值;返回字典
4、将函数存储在模块中
1)导入整个模块(pizza.py)
import pizza
2)导入特定的函数
from pizza import make_pizza #导入单个函数
from pizza import make_pizza,send_pizza #导入多个函数
3)使用as给函数取别名
from pizza import make_pizza as mp
4)使用as给模块取别名
import pizza as p
5)导入模块中的所有函数
from pizza import *
七、类
1、类定义
Class Dog():
def __init()__(self,name,age):
self.name = name
self.age = age
def sit(self):
print('sit')
def roll_over(self):
print('roll over')
2、类创建
my_dog = Dog('Lufie',6)
your_dog = Dog('Lucky',3)
3、Python标准库(Python 标准库 — Python 3.7.13 文档)
Python标准库是一组模块。
以collections中的有序字典OrderedDict为例,它兼具列表和字典的主要优点,信息关联并有序。
from collections import OrderedDict
languages = OrderedDict()
languages['jen'] = 'Python'
languages['sarah'] = 'c'
languages['phil'] = 'ruby'
languages['eward'] = 'c'
print(languages)
以random中的获取随机整数的函数randint为例
from random import randint
print(randint(1,6))
八、文件
1、读取整个文件
with open('pi_digits.txt') as file_object:
contents = file_object.read() #读取整个文本
#contents = file_object.readlines() #将文件的内容存入列表
print(contents)
with关键字在不需要访问文件后自动将其关闭
2、逐行读取文件
使用for循环
with open('pi_digits.txt') as file_object:
for line in file_object:
print(line)
3、写入文件
with open('p.txt','w') as file_object:
file_object.write('I like programming')
第二个实参说明
'w':写入模式,会覆盖
'r':只读模式,默认
'a':附加模式,会追加
'r+':能够读取和写入
4、写入多行
手动添加换行符\n
file_object.write('I love dogs\n')
file_object.write('I love cats\n')
九、异常
当程序出现异常,try-except处理后,程序继续运行;不处理则程序终止,显示traceback。
以ZeroDivisionError(0成为了除数)异常为例捕捉异常:
try:
answer = int(first_number)/int(second_number)
except ZeroDivisionError:
print("you can't divide by 0")
else:
print(answer)
十、JSON数据(Javascript Object Notation)
1、json.dump(data)
参数data可以是要存的数据,也可以是可存数据的文件对象。
import json
numbers = [2,3,5,7,11,13]
file_name = 'numbers.json'
with open(file_name,'w') as f:
json.dump(numbers,f)
2、json.load(data)
参数data是文件对象。
import json
file_name = 'numbers.json'
with open(file_name) as f:
numbers = json.load(f)
十一、代码测试
1、简介
Python代码测试使用模块unittest。
单元测试:核实函数的某方面没有问题;
测试用例:一组单元测试组成;
全覆盖测试用例:一整套单元测试组成。
2、用法举例
import unittest
from name_function import get_formatted_name
class NameTestCase(unittest.TestCase):
"""类注释(紧跟类后):测试name_function.py"""
def test_first_last_name(self):
"""函数注释(紧跟函数后):能够正确处理姓名吗"""
formatted_name = get_fomatted_name('jan','jop')
self.assertEqual(formatted_name,'Jan,Jop')
unittest.main() #运行这个文件中的测试
3、常用的断言方法:
assertEqual(a,b)
assertNotEqual(a,b)
assertTrue(x)
assertFalse(x)
assertIn(item,list)
assertNotIn(item,list)
4、方法setUp()
如果TestCase类中包含了方法setUp(),Python会先运行setUp,再运行test_开头的方法。
测试用例的运行结果:
1)测试通过,打印一个句点
2)测试错误,打印E
3)断言失败,打印F
十二、格式设置指南
1)每级缩进采用四个空格
2)每行不超过80字符,注释不超过72字符
3)使用空行组织程序
4)函数定义后应该跟注释
5)形参默认值或关键字实参,等号两边不留空格
6)两个空行将相邻函数分开
7)除注释以外所有import放文件开头
8)类名采用驼峰命名法(即类名中每个单词首字母大写)
9)实例名和模块名采用小写,单词之间使用下划线
10)类定义后包含注释,类似函数注释
11)类中用空行分隔方法,模块中用两个空行分隔类
12)先导入标准库模块,再导入自己的模块,之间加空行