计算机的概念: 计算机俗称电脑,是现代一种用于高速计算的电子机器 计算机的组成: 硬件系统:运算器 控制器 存储器 输入设备 输出设备 软件系统:系统软件 应用软件 Python语言: Python语言:Python语言是一种面向对象的解释型计算机程序设计语言 Python的优点:简单 开源 丰富的库 可扩展性 可移植性 面向对象 解释性 Python的缺点:运行速度慢 中文资料较少 构架选择多 第一个程序:Hello python Print(“hellopython”) 第一个程序常见的BUG: 针对BUG需要具备以下能力: 具备识别BUG的能力:多看 具备分析BUG的能力:多思考 多查阅资料 具备解决BUG的能力:多尝试 多查阅资料 多记录 多积累 常见BUG类型: 命名错误:NameError 缩进错误:IndentationError 语法错误:SyntaxError Python基础语法: Python变量: 概念:描述计算机中的数据存储空间 作用:在计算机内存中保存数据 保存数据的格式:变量名 = 值 使用的数据格式:变量名 变量命名的规则: 不能以数字开头 不能与关键词重名 只能由数字,字母,下划线组成 区分大小写 Python注释: 单行注释:添加/取消快捷键为Ctrl + / 多行注释:”””说明性文字信息””” 算术运算符: + 加 计算两个数的和 - 减 计算两个数的差 * 乘 计算两个数的乘积 / 除 计算两个数的商 // 整除 两个整数相除后,取结果的整数部分 % 取余 两个整数相除后,取结果的余数部分 ** 乘方 计算a的b次方 算数运算优先级: 乘方 > 乘、除、整除、取余 > 加、减 相同等级的运算顺序为从左到右 可以使用括号改变运算顺序 变量类型: 类型特征:变量的类型在变量使用过程中随时发生变化,以最后一次执行 = 操作的结果为准 类型获取:使用type(数据)即可获取数据对应的类型 类型: int 整型 表示所有的整数 float 浮点型 表示所有的小数 bool 布尔型 表示逻辑值 str 字符串 表示字符串信息 赋值运算符: = 赋值 a=b,将b的值给a += 加后赋值 a+=b,将a+b的值给a -= 减后赋值 a-=b,将a-b的值给a *= 乘后赋值 a*=b,将a*b的值给a /= 除后赋值 a/=b,将a/b的值给a //= 整除后赋值 a//=b,将a//b的值给a %= 取余后赋值 a%=b,将a%b的值给a **= 次方后赋值 a**=b,将a的b次方的值给a 赋值运算符注意事项: 基本赋值运算 = 操作,左侧只能是变量,右侧可以是任意数据或变量 特殊赋值运算的左侧只能是变量,右侧可以是变量,也可以是数字 字符串运算: 字符串连接运算: 字符串之间可以使用 + 运算符完成多个字符串之间的拼接操作 字符串反复连接: 字符串可以使用 * 运算符来完成单个字符串的连续拼接操作 字符串使用注意事项: 字符串连接运算 + 不能在字符串类型与其他类型间进行操作 While循环语句: 循环概念:循环是程序设计语言中反复执行某些代码的一种计算机处理过程 While循环的作用:重复执行某些代码 循环变量:循环变量是用于控制循环执行次数的变量,通常从0开始计数 死循环:如果循环语句未设置合理的退出条件,则循环语句将构成死循环,程序将永久执行下去 循环的终止和跳出: Break: break可以用于终止循环的执行,当程序执行到break语句后,程序将跳出循环,执行循环语句后面的代码 Continue: continue可以用于提前结束本轮循环的执行,当执行到continue语句后,程序将跳到判定循环是否向下执行的条件处,进行下一轮循环是否执行的判定与后续代码执行 注意事项: break和continue必须出现在循环体中 循环嵌套: 循环嵌套概念: while循环中重复执行的代码又包含了另一个while循环。 循环嵌套的基本语法: while 条件: ____while 条件: ________反复执行的代码 …… …… 注意事项: break与continue仅能控制其所在的循环结构,不能控制其他循环结构 面向对象: 面向对象的概念:面向对象是一种编程思想,是对现实世界中的事物进行抽象的方式。应用到代码编程设计中,是一种建立现实世界事物模型的方式 面向对象和面向过程的区别: 面向过程关注的是完成工作的步骤,面向对象关注的是谁能完成工作。面向对象是在完成工作的时候关注哪些个体能够完成对应的工作,找到对应的个体即可完成对应任务 类: 类的概念: 类是一系列事物的统称,同类必定具有相同的特征。日常事物的特征根据特性分为状态和行为,对应到类中是变量和方法 特征分类: 状态 à 变量(成员变量) 行为 à 方法(成员方法) 统称:类的成员 类定义语法格式: Class 类名: Pass 说明: pass是空语句,不具有任何意义,仅为了保持程序结构完整性 类的命名规则: 类名命名规范:满足大驼峰命名规则 对象: 对象的概念:对象是类的具体表现形式,是实际存在的个体。(类是一系列事物的统称) 创建对象语法格式:对象名 = 类名() 成员变量: 成员变量的概念:成员变量用于描述对象的固有状态或属性 定义成员变量语法格式(公有属性/公有变量): class 类名: def__init__(self): self.变量名1 = 值1 self.变量名2 = None 公有变量与独有变量的区别: 公有变量在__init__方法中声明,每个对象都具有该变量 独有变量在创建对象后声明,只有当前对象具有此变量 定义对象的独有变量时,如果独有变量名与公有变量名相同,视为修改公有变量的值;如果独有变量名与公有变量名不相同,视为定义新的独有属性 None含义是为空,表示没有具体的数据 变量的调用格式: 取值:对象名.变量名 赋值:对象名.变量名 = 值 成员方法: 成员方法的概念:成员方法用于描述对象的固有行为 定义成员方法的语法格式: 格式一(无参方法): class 类名: def 方法名(self): 方法体 格式二(有参方法) class 类名: def 方法名(self,形参1,形参2,…): 方法体 调用成员方法的语法格式: 格式一(调用无参方法): 对象名.方法名() 格式二(调用有参方法): 对象名.方法名(实参1,实参2,…) 封装: 封装的作用: 封装操作可以对受访问保护的成员进行功能开放的控制,达到保护数据不被非法访问的目的 定义私有变量语法格式: self.__属性名 = 值 定义私有方法语法格式: def __方法名(self,形参1,形参2,…): 方法体 标准封装语法格式: 变量私有化格式: self.__属性名 = 值 提供公共的访问器格式: def get_属性名(self): return self.__属性名 提供公共的修改器格式: def set_属性名(self,属性名): self.__属性名 = 属性名 类变量: 类变量的概念: 类变量是定义在类中,不属于某个具体对象的特征,被所有对象共同使用的特征 定义类变量语法格式: class 类名: 变量名 = 值 调用类变量语法格式: 赋值格式: 类名.类变量名 = 值 取值格式: 类名.类变量名(推荐) 对象名.类变量名(不推荐) 继承: 继承的概念: 继承继承描述的是一种类间关系,一个类A从另一个类B获取成员信息,称类A继承自类B。 提供成员信息的类称父类(基类),获取成员信息的类称子类(派生类)。
继承的作用:子类可以使用父类的成员(成员变量,成员方法) 继承语法格式: Class 类名 (父类名): Pass 注意事项: 子类可以添加父类没有的成员
父类的私有成员不可以被继承 重写: 重写的概念: 重写指在子类中定义与父类相同名称的成员方法 重写的作用:
子类对父类的成员方法进行重写后,使用子类对象调用该方法时,将执行子类中重写后的方法 在子类中访问父类被重写的方法: 格式一: 父类名.方法名(对象) 格式二: super(本类名,对象).方法名() 格式三:(推荐) super().方法名()
多继承: 多继承的概念: 一个类同时继承多个类,称为多继承 定义多继承的语法格式: Class类名(父类名1,父类名2…): Pass 多继承关系中访问父类成员冲突: 多继承关系中,当多个父类具有同名的成员,子类调用时先调用继承关系中我一个声明的类的成员
多态: 多态的概念: 一个对象具有多种形态,在不同的使用环境中以不同的形态展示其功能,称该对象具有多态特征。
鸭子类型: 鸭子类型是一种特殊的调用现象,当对象在语法层面能够满足调用关系,但对象并不具有对应的对象形态,称该对象此时具备鸭子类型 鸭子类型是一种特殊的多态表现形式
注意事项:多态通常发生在继承关系的基础之上
列表 列表的概念: 列表是一种存储大量数据的存储模型。 列表的特点 列表具有索引的概念,可以通过索引操作列表中的数据。列表中的数据可以进行添加、删除、修改、查询等操作。 列表的基本语法 创建列表: 变量名 = [数据1,数据2,……] 获取列表数据: 变量名[索引]
修改列表数据: 变量名[索引] = 值
元组 元组的概念 元组是一种存储固定数据的存储模型。 元组的特点 元组具有索引的概念,可以通过索引操作元组中的数据。元组中的数据可以进行查询操作,但不能进行添加、删除、修改操作。 元组的基本语法 创建元组:变量名 = (数据1,数据2,……) 获取元组数据:变量名[索引 注意事项 元组中的数据如果是非引用类型数据,不允许修改 元组中的数据如果是引用类型对象,该对象不允许替换,而对象的属性值可以
集合 集合的概念 集合是一种存储大量无序不重复数据的存储模型。 集合的特点 集合没有索引的概念。集合中的数据可以进行添加、删除等操作。 集合的基本语法 创建集合:变量名 = {数据1,数据2,……}
字典 字典的概念 字典是一种使用“键值对结构”存储数据的存储模型。 字典的特点 字典不具有索引的概念,字典使用键key代替索引,可以通过键操作字典中存储的数据值value。字典可以根据键key进行数据的添加、删除、修改、查询操作。字典的基本语法 创建字典: 变量名 = {键1:值1,键2:值2,……} 添加数据: 变量名[键] = 值 (字典中没有对应的键) 获取数据: 变量名[键] 修改数据: 变量名[键] = 值 (字典中存在对应的键)注意事项: 字典中的键是唯一的
# 老师随机分配办公室的程序题 # 输入办公室个数 # 输入老师的个数 # 然后将了老师分配到办公室,保证每个办公室至少一个 import random # 定义办公室和老师的初始值 room_nums = 0 teacher_nums = 0 # 判断条件 while True: rooms = int(input("请输入办公室的个数:")) teachers = int(input("请输入老师的个数:")) if rooms <= teachers: room_nums = rooms teacher_nums = teachers break print("老师的数量少于办公室的数量,请重新分配") # 定义办公室列表 room_list = [] while room_nums >= 1: room_list.append([]) room_nums -= 1 # 定义老师的个数 teacher_list = [] while teacher_nums >= 1: teacher_list.append("teacher%s" % (teacher_nums + 1)) teacher_nums -= 1 # 先把每个办公室中各安排一名老师 for room in room_list: # 从老师列表中随机取出 index = random.randint(0, len(teacher_list) - 1) # 将取出的老师从列表中删除 tec = teacher_list.pop(index) # 将老师添加到选出的办公室列表中 room.append(tec) # 把剩下的老师随机放入办公室中 for teacher in teacher_list: # 从办公室列表中随机抽取 index1 = random.randint(0, len(room_list) - 1) # 将老师放入选中的办公室中 room_list[index1].append(teacher) print(room_list)
|