字符串
修改字符串大小写
s.title() 首字母大写
s.upper() 全部大写
s.lower() 全部小写
+可以合并字符串: “ada”+”lovelace” çè “adalovelace” 中间没有空格
删除空白
s.rstrip() 删除末尾多余空白
s.lstrip() 删除开头空白
s.strip() 同时剔除两端空白
以上删除操作只是暂时的,需要获取没有空白的字符需要重新存储进变量
数字
+:加
-:减
*:乘
/:除
**:乘方
str()函数可以将非字符串值表示为字符串:
age = 24;
str(age) // “age is” + “ “ + str(age) 可以 “age is” + “ ” + age 报错—类型不匹配
注释
Python中使用 # 表示行注释
“”” “”“表示段落注释
列表
使用[]来创建列表,使用逗号分隔其中元素:
bicycle = [“trek”,”cannondale”,”redline”]
直接打印列表会包含[]---如print(bicycle)
访问列表的元素:
- 使用下标:bicycle[0] 即 trek //当列表元素为字符串,还可以调用上面说的字符串方法
下标从0开始,-1表示最后一个元素
对列表中元素做操作:
- 修改列表元素
bicycle[0] = “ducati” à bicycle = [“ducati”,”cannondale”,”redline”]
不能对不存在的元素做修改
- 增加元素
使用append方法可以在列表末尾增加元素
bicycle.append(“new”)
使用insert方法可以在任意位置添加元素
bicycle.insert(0,”new”)
不能使用下标添加元素
- 删除元素
使用del语句删除:
del bicycle[0] – 可以删除任意位置的元素
使用pop方法删除元素—删除列表尾(栈顶)元素
bicycle.pop()
通过给pop方法传递参数也可以删除任意位置的元素
bicycle.pop(0) 即删除bicycle[0]
根据值删除元素—使用remove方法,不知道位置但知道值时可以使用这种方法
bicycle.remove(“ducati”)
值得注意的是remove只删除第一个指定的值,如果多次出现则需要用循环删除
NOTE pop 和 remove方法删除的元素只要赋值给变量就可以再次使用,del则不行
example = bicycle.pop()
组织列表
1、使用sort()方法对列表可以进行永久排序
bicycle.sort()
向sort方法传递参数reverse=True可以反向排序
bicycle.sort(reverse=True)
2、使用sorted函数对列表进行临时排序
sorted(bicycle)
这里bicycle的顺序不变
3、使用方法reverse()可以倒序打印列表
bicycle.reverse() –这里的修改是永久的,想复原再次调用reverse即可
4、使用len函数可以获知列表的长度
len(bicycle)
操作列表
- 遍历整个列表
- 使用for循环
for bicycle in bicycles:
statement
- 使用下标
while i<len(bicycles):
statement
- 创建数值列表
使用range函数可以生成一系列数字
range(1,5)生成 1 2 3 4 注意 5 不会生成
range还使用第三个参数来指定步长:range(2,11,2) 生成 2 4 6 8 10
for value in range(2,11,2):
print(value)
直接print(range(2,11,2))或num = range(2,11,2) print(num) 都输出range(2,11,2)会将其解释为字符串
使用range就可以创建数字列表:
numbers = list(range(1,6))
此时numbers = [1,2,3,4,5]
同样可以用循环加append方法向列表中添加元素
max() //列表最大值
min() //列表最小值
sum() //列表元素和
以上三个函数用于处理数字列表
max(numbers)
对数字列表的数字列表列表,形如矩阵,max调出的是最大行,max(max())输出列表的最大值,这类似与matlab中矩阵函数,此时不能调用sum(matrixs)
列表解析:
squares = [value**2 for value in range(1,11)]
即生成一个1-10的数字平方的列表,类似将for循环加生成列表的表达式组成一句话
详细解析以后在学
列表切片—列表的部分元素
创建切片要使用列表的下标,其指示类似range,不会有第二个索引指示的列表元素
newbicycle = bicycle[1:3]
不指示第一个索引默认从0开始
不指示第二个索引默认到末尾
第一个索引为负数,即是从列表为开始计数-3即为倒数第三个
同样可以使用for循环遍历列表切片,形式一样
复制列表就可以使用切片做到,忽略第一和第二个索引即可
newbicycle = bicycles[:]
元组—类似不可变列表
使用圆括号()创建元组
可以使用下标访问元素
dimensions = (200,50)
dimensions[0]即是200,索引下标还是用[]括起来
值得一提的是虽然不可以修改元组的元素,但是可以给整个元组变量赋新值,如
dimensions = (400,50)
if语句
if conditions :
statement
elif conditions :
statement
else :
statement
可以使用if检查特定值是否在列表中
user = “xxx”
if user (not) in banned_users:
statement
还可使用if确定列表是否为空
if banned_users :
statement
如果列表不空,执行statement
字典
字典使用花括号创建
字典是一系列键—值对,每个键都与一个值相关联,值得类型不定,python任何对象都可以做值,键值对之间用逗号隔开
alien_0 = {“color” : “green” , “points” : 5}
这里alien_0就是一个字典,含有两个键值对
访问字典中的值
----使用键可以访问字典中的值
print(alien_0[“color”])
添加键值对
----依次指定字典名,用方括号括起的键和相关联的值
alien_0[“x_position”] = 0
就添加了 “x_position” : 0 这个键值对进alien_0字典中
修改字典中的值
----依次指定字典名,用方括号括起的键以及与键相关联的新值
alien_0[“color”] = “newcolor”
删除键值对
----使用del语句,指定字典名和要删除的键
del alien_0[“points”]
遍历字典
- 遍历所有键值对
----使用for循环,items()方法
for key,value in alien_0.items() :
statement
items方法返回一个键值对列表
- 遍历字典中所有键
----使用keys方法
for k in alien_0.keys() :
statement
按顺序遍历字典中所有键:
----可以在for循环中对返回的键排序:
for k in sorted(alien_0.keys()) :
statement
- 遍历字典中所有值
----使用方法values(返回一个值列表,不包含任何键)
for v in alien_0.values() :
statement
当值有很多重复,而我们有不需要考虑重复值的时候,可以使用集合来剔除重复项
集合类似于列表,但是每个元素都独一无二,使用set()
for v in set(alien_0.values()) :
statement
关于嵌套,调用只需要一层一层,按照数据组织的方式向下即可
用户输入
- input()函数
input()函数让程序暂停运行,等待用户输入,获取输入后,返回一个变量
message = input()
print(message)
input()函数还接受一个参数:向用户显示的提示或说明,如
message = input(“please input your name”)
- 用int()来获取数值输入
使用input函数会将输入解读为字符串,这里如果要是获取数值,可以使用int将输入数据转换为数值类型
age = input()
age = int(age) //将字符型age转换成整形,若是浮点数使用float()
如何判断输入字符串是否是数字:
https://www.cnblogs.com/zxmbky/p/9160822.html
更进一步的处理之后学习
while循环
while conditions :
statement
break语句同样可以退出while循环----和C一样,continue类似
使用ctrl+C可以强制终止程序运行
函数
- 定义函数
----使用关键字 def
def function_name() :
statement
def greet_user() :
“””显示最简单的打印语句”””
print(“hello”)
向函数传递信息(参数)
括号内为参数列表
def greet_user(username) :
print(username.title() + “ hello”)
- 关于传递参数
1)使用对应位置传递对应实参
2)使用关键字实参
默认值
在编写函数时,可以给每个形参指定默认值,当传递实参时,使用实参值,否则使用指定的默认值
def describe_pet(pet_name,animal_type=’dog’) :
指定的默认值的形参应当放在最后
- 关于返回值
----使用return语句返回值
使用默认值可以让实参变成可选的,给默认值不指定任何信息,当给其赋实参值,使用实参值,否则就不会有信息产生
def get_formatted_name(first_name,last_name,middle_name=’’) :
- 传递副本
对于传递列表,如果对其操作,列表会被修改,此时可以通过传递副本将原列表保留下来,基本格式如下
function_name(list_name[:])
- 传递任意数量的实参
----使用形参*toppings,*表示创建一个名为toppings的空元组,并将收到的所有值都封装到这个元组中
def make_pizza(*toppings) :
make_pizza(“mushroom”,”green peppers”,”extra cheese”)
----这里也可以结合位置实参和任意数量实参
def make_pizza(size,*toppings) :
只有第一个值被存进size,余下传递的所有实参都存入toppings
----使用任意数量的关键字实参,** 两个*表示创建一个空字典
def build_profile(first,last,**user_info) :
这里就创建了一个user_info的字典,并将收到的所有键值对都存入其中,传递键值对可使用如下格式
key_name = “expressions”
- 将函数存储进模块
----将函数导入模块使用import,在同一个文件夹下直接import 模块(文件)名即可
使用模块(文件)名.function_name 即可调用相应模块中的方法
----导入特定的模块
from module_name import function_name
通过逗号分割函数名,可以从对应模块中导入任意数量的函数
from mudule_name import function_name1,function_name2,…
----使用as给函数指定别名
from module_name import function_name as fn
----使用as给模块指定别名
import module_name as mn
----导入模块中所有函数(除直接导入模块之外),使用*运算符
from module_name import *
类
- 创建和使用类
----使用class关键字
class class_name() :
statement
class Dog():
def _ _ init_ _(self,name,age) :
“””初始化属性name和age”””
self.name = name
self.age = age
def sit(self) :
statement
def roll_over(self) :
statement
方法 _ _ init _ _ () :
类中的函数称为方法,__init__()方法是一个特殊的方法,每当创建dog类的时候,python都会自动运行它,开头和末尾各有两个下划线
这里定义了三个形参,self形参必不可少,并且必须位于其他形参前面。每个与类相关联的方法调用都自动传递实参self,是一个指向实例本身的调用,让实例能访问类中的属性和方法
my_dog = Dog(“willie”,6)
访问属性 :my_dog.name
调用方法 :my_dog.set()
修改属性的值
- 直接修改
- 通过方法修改
- 通过方法对属性的值进行递增
继承
一个类继承另一个类时,自动获得另一个类的所有属性和方法,原有的类称为父类,新类称为子类
创建子类实例,首先需要给父类的所有属性赋值
class Car():
statement
class ElectricCar(Car):
def __init__(self,make,model,year):
super().__init(make,model,year)
创建子类时,父类必须包含在当前文件中,且位于子类前面,定义子类时,必须在括号内指定父类的名称,方法__init__接受创建Car实例所需的信息
super是一个特殊函数,将父类和子类相联系
也可以重写父类方法,在子类中定义这样一个方法:与要重写的父类方法同名,这样python会忽略该父类方法而只关注在子类中定义的相应方法
导入类
----同样使用import语句
from module_name import class_name – 导入单个类
from module_name import class_name1,class_name2,… -- 导入多个类
import module_name -- 导入整个模块
文件和异常
with open(“file_name.kind(文件类型)”) as file_object :
statement
关键字with在不再需要访问文件后将文件关闭
方法read可以读取文件的全部内容
open中也可以加上文件的路径,在windows系统中,文件路径用 \ 而非 /
注意python只能将字符串写入文本文件,要将数值数据存储进文本文件,需要用str将其转换为字符串形式
异常(暂略)
存储数据
----使用模块json
json.dump()将数据写入文件
json.load()加载文件
import json
numbers = [1,2,3]
filename = “numbers.json”
with open(filename,”w”) as f_obj:
json.dump(numbers,f_obj)
“””
numbres = json.load(f_obj) -- 需要在with语句块内完成
print(numbres)
“””
测试代码 – 后续用到再详细学习
python标准库中的模块unittest提供了代码测试工具
单元测试用于核实函数的某个方面没有问题
测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求
全覆盖式测试用例包含一整套单元测试