黑马程序员技术交流社区
标题: Python部分重要基础知识的总结以及程序题 [打印本页]
作者: lsdf15238 时间: 2018-10-7 13:04
标题: Python部分重要基础知识的总结以及程序题
计算机的概念:
计算机俗称电脑,是现代一种用于高速计算的电子机器
计算机的组成:
硬件系统:运算器 控制器 存储器 输入设备 输出设备
软件系统:系统软件 应用软件
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)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |