目录
一、快捷键
二:常用函数或方法
三、列表
四、元组
五、字典
六、列表和字典的嵌套
七:函数
八:类
九、文件操作
十、测试
十一、学习书籍
一、快捷键
重复上次输入语句:Alt+P(IDLE中)
二:常用函数或方法
编程语言中基础的内容已省略
注意(书写格式):::方法前的“.”代表对执行对象的操作(如MyBooks.title()),没有“.”代表执行对象在方法括号()内(如strip(MyBooks))。
1、合并字符串:+ 制表符:\t 换行符:\n
2、.title():大写首字母 .upper():全大写 .lower():全小写
strip( ):删除字符串开头和末尾的空白 lstrip( ):删除开头空白 rstrip( ):删除右边空白
str( ):将非字符串转换为字符串
3、Python语言的书写格式是缩进。
4、if-elif-else:超过两种情况的判断(elif代码块可多次使用,else代码块可省略)(语句后面加冒号“:”)
5、input():输入 int():输入数值
6、for循环是遍历列表和字典的有效方式,但是它不能修改;while循环可以在遍历列表和字典的同时进行修改。
三、列表
使用中扩折号"[]",列表第一个元素索引为0,以此类推;最后一个元素索引可以为-1。如:
num = [2, 5, 1, 6, 4]
1、.append():在列表末尾添加元素 .insert( , ):在列表任何位置插入元素
del语句 :删除列表指定元素 .pop():删除列表末尾元素(并将删除的元素存储在新的变量中),在括号中添加元素角标可以对应删除 .remove():删除第一个指定值的元素(若有多个相同的值,需要循环)
.sort():对列表进行永久性排序(数字大小、首字母顺序) .sort(reverse=True):反排序 sorted():排序显示,不影响原列表结构 sorted( ,reverse=True):反排序
.reverse():反转列表
len( ):列表长度 min/max/sum():列表中元素最小值/最大值/总和
range( , ):随机生成指定范围内的数字 list():转化为列表 list(range( , )):插件数字列表
assert():(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。
2、遍历列表:for循环(句尾加冒号":");列表中元素的平方也用for循环。
切片: [ : ]:类似于matlab中的格式(没有指定索引值,默认开头或者结尾)。切片表示法“[:]”也直接表示创建列表的副本。
关键词in:创建一个列表后,检查其中是否包含特定的值,返回Ture/False(有in的表达一般都对应有not in的表达)
关键词not in:检查特定值是否不包含在列表中
3、if语句:
检测列表元素(先用foe循环遍历)
确定列表不是空
if语句中将列表名用在条件表达式中时,当列表有元素时返回True,列表为空时返回False
使用多个列表
4、广播机制(broadcasting):如果你有一个mn的矩阵,让它加减乘除一个1n的矩阵,它会被复制m次,成为一个mn的矩阵,然后再逐元素地进行加减乘除操作。
Cal = A.sum(axis=0)
#axis用来指明将要进行的运算是沿着哪个轴执行,0轴是垂直的轴,即列;1轴是水平轴,即行。
5、reshape:改变数组的形状(数组元素不会发生变化)
6、
a = np.random.randn(5,1) #创建的是列向量or行向量
b = np.random.randn(5) #尽量别用这种,不算矩阵,矩阵间计算会有问题
#输出
a = [[1],[2],[3],[4],[5]]T
b = [1,2,3,4,5]T
四、元组
不可变的列表,使用圆括号"()"。(列表的元素可以修改,但是元组不能修改,只能重新赋值)。如:
num = (2, 5, 1, 6, 4)
五、字典
字典是一系列键-值对。每个键对应一个值(之间用冒号连接),可以通过使用键来访问与之关联的值。对应值可以是:数字、字符串、列表、字典。可做类。如:
num = {'num1': 2, 'num2': 5, 'num3': '壹', 'num4': ‘六’, 'num5': 4}
字典拥有和列表相同的操作语句。
1、获取与键相关联的值:num['num1'] 添加键-值对:num['num6'] = 12 (可以先创建空字典,再一个一个添加) 修改键-值对:num['num1'] = 12 删除键-值对:del语句(del num['num1'])
2、遍历字典:for循环:
for key, value in num.items(): (设置key, value两个变量)
遍历字典中的所有键:.keys():
for key in num.keys():
遍历字典中的所有值:.values():
for key in num.values():
按顺序遍历:sorted():
for key in sorted(num.keys()):
六、列表和字典的嵌套
嵌套:将一些列字典存储再列表中,或将列表作为值存储在字典中
字典列表:
box = [num_1, num_2, num_3]
#类似于类,每个单元拥有单独的属性
在字典中存储列表:
num = {'num1': [1, 2], 'num2': 5, 'num3': ['壹', 7], 'num4': ‘六’, 'num5': 4}
在字典中存储字典:
num = {'num1':
{
‘第一个’: 1,'第二个': 2
},
'num2': 5,}
七:函数
1、 函数定义:
def handsome(who):
"""文档字符串(这个函数是耍帅用的)"""
print(who.title() + "好帅" + "!!!")
handsome('jay')
2、形参和实参:who是一个形参(函数执行所需的信息,可以有多个形参)(包含位置形参、关键字形参、默认值),jay是一个实参(调用函数时传递给函数的信息)
Python可以向一个形参传递任意数量的实参。并优先匹配位置实参和关键词实参,再将余下的实参都收集到最后一个形参中
可以向函数传递列表,并可修改列表元素(在函数中修改列表是永久性的)
3、返回值:函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值,称为返回值。函数可以返回任何类型的值,包括列表和字典等复杂的数据结构。调用有返回值的函数时,需要提供一个变量,用于存储返回的值。
def get_name(first_name,last_name):
"""返回姓名"""
full_name = first_name + '·' + last_name
return full_name #返回值
name = get_name('jay', 'zhang') #给返回值赋值
print(name)
4、函数模块:将函数存储在模块(*.py)的独立文件中,以便住程序调用。
此语法同样适用于类的导入
调用语句:
import hanshu1 #调用模块
import hanshu1 as hs #指定自定义别名
hanshu1.balabala() #使用模块中的函数
hs.balabala()
导入特定的函数:(可同时导入多个)
from hanshu1 import balabala1,balabala2,balabala3 #导入模块中的特定函数
from hanshu1 import balabala1 as ba #指定自定义别名
from hanshu1 import * #导入模块中的所有函数
balabala1() #使用模块中的函数
ba()
八:类
编写类时,定义一大类对象都有的通用行为。基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。类可以用来创建任何东西。首字母大写的名称是类。
实例化:根据类来创建对象
1、创建类:
class Dog(): #首字母大写的名称指的是类
'''模拟小狗的简单类'''
def _init_(self, name, age): #方法(类中的函数(开头和结尾有下划线),用法与函数相同),创建实例时自动运行。其中形参self是必不可少的,并且必须位于其它自定义形参的前面(self是一中指向实例本沈的引用,让实例能够访问类中的属性和方法)。
'''初始化属性name和age'''
self.name = name #每个属性必须有初始值
self.age = age
#后面可以直接继续添加属性
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " sit.")
def roll_over(self):
"""模拟小狗被命令时打滚"""
print(self.name.title() + " roll over.")
def how_old(self):
"""模拟小狗自报岁数"""
print(self.name.title() + "is" + self.age + " years old.")
2、根据类创建实例:
class Dog():
--略--
my_dog = Dog('jack', 6) #使用实参jack和6来调用Dog类中的方法_init_()创建小狗实例my_dog,用输入的值设置属性name和age。可创建多个实例。
print("my dog's name is " + my_dog.name.title() + ".") #访问实例中的属性 结果:my dog's name is Jack.
print("my dog is " + str(my_dog.age) + "years old.") 结果:my dog is 6 years old.
my_dog.sit() #创建实例后,就可以调用类中自定义的各种方法。 结果:Jack sit.
my_dog.roll_over() 结果:Jack roll over.
my_dog.how_old() 结果:Jack is 6 years old.
3、修改属性的值:
通过实例直接修改属性的值、通过方法修改属性的值、通过方法对属性进行递增
#1、通过实例直接访问修改
my_dog.age = 12
my_dog.how_old() #结果:Jack is 12 years old.
#2、通过方法修改属性的值
def update_age(self,new_age):
self.age = new_age
my_dog.update_age(12)
my_dog.how_old() #结果:Jack is 12 years old.
#3、通过方法对属性进行递增
def increment_age(self,age_step):
self.age += age_step
my_dog.increment_age(1)
my_dog.how_old() #结果:Jack is 13 years old.
4、继承:
一个类继承另一个类时,将自动获取所有属性和方法。原有的类称为父类,新类称为子类。子类继承了其父类的所有属性和方法,同时还可以自定义自己的属性和方法。
创建子类;子类添加新属性、新方法;重写父类的方法;从一个模块中导入多个类
from another_class import Move, Action #导入模块another_class.py中的类
-----------------------------------------------------
#创建子类时,父类必须包含在当前文件中,且位于子类前。
class Dog():
---略---
class Cat(Dog): #定义子类时,必须在括号内指定父类的名称。定义子类cat
#继承父类的属性和方法
def _init_(self, name, age):
'''初始化父类的属性'''
super()._init_(name, age) #super()是一个特定函数,将父类和子类关联起来。
-----------------------------------------------------
self.move = Move() #将一部分属性和方法单独提取出来放在Move类中(Move类在单独的程序模块another_class.py中,一个模块可以存储多个类),然后在此模块的类中引用,当作为此类的一个属性。简化程序
self.color = yellow #给子类添加新的属性
------------------------------------------------------
def body(self): #给子类添加新的方法
"""模拟小猫的身体颜色"""
print(self.name.title() + "'s color is" + self.color +".")
def roll_over(): #重写父类的方法(重名即可,Python会只关注在子类中的定义方法)
"""猫不会打滚"""
print(self.name.title() + "can't roll over.")
------------------------------------------------------
my_cat = Cat('tom', 20) #新实例my_cat
my_cat.sit() #结果:Tom sit.
my_cat.roll_over() #结果:Tom can't roll over.
my_cat.how_old() #结果:Tom is 20 years old.
my_cat.body() #结果:Tom's color is yellow.
my_cat.move.move1() #调用引用类中的方法,对应self.move = Move()
九、文件操作
1、读取文件 :
Python读取的文本文件都解读为字符串。若想使用数字的数值,需要用int()、float()函数转换为整数、浮点数。
绝对路径、相对路径;逐行读取;创建以文本每行内容为元素的列表
#绝对路径
with open('data1.txt') as data1: #打开txt文件(绝对路径:在当前文件目录查找文件)
contents = data1.read() #读取文件内容
print(contents.restrip()) #read()的末尾会返回一个空字符串,用restrip删除
-----------------------------------
#相对路径
file_path = 'C:\Desktop\data2.txt'
with open(file_path) as data2:
#逐行读取
for line in data2: #for循环,实现逐行读取
print(line.rstrip())
-------------------------------
#创建以文本每行内容为元素的列表
lines = data2.readlines() #读取每行,并赋予列表
for line in lines:
print(line.rstrip())
2、写入文件:
写入格式:'r'、'w'、'a'、'r+'
#写入文件
#open()函数的第二个实参包含:'r'读取模式,'w'写入模式(若文件已存在,会先清空),'a'附加模式(添加内容,不会覆盖文件原有内容),'r+'读取和写入
with open('data1.txt', 'w') as data1:
data1.write("我好帅")
3、异常提示:
try-except代码:处理异常,使异常能够顺利跳过
try:
print(5/0)
except ZeroDivisionError: #ZeroDivisionError为"5/0"的错误代码类型(其它错误,改为其它)
print("0不能当除数")
else:
pass #程序什么也不做
#后面继续执行代码(因为已经用一个输出语句定义了发生错误时的解决方式,相当于没有异常)
4、存储数据:
json.dump():存储数字列表 json.load():将列表读取到内存中(实现在程序之间共享数据)
5、重构:
就是对代码进行改进的专业说法。
十、测试
略,详情见书
------------------------------------------
书中附带3个项目实战详细步骤:
外星人入侵小游戏、数据可视化、Web应用程序
十一、学习书籍
《Python编程:从入门到实践》 Rric Matthes著 中国工信出版集团,人民邮电出版社