-
Python特点
Python 是完全面向对象的语言
a. 函数、模块、数字、字符串都是对象,在 Python 中一切皆对象
b. 完全支持继承、重载、多重继承
c. 支持重载运算符,也支持泛型设计
Python 拥有一个强大的标准库,Python 语言的核心只包含 数字、字符串、列表、字典、文件 等常见类型和函数,而由 Python 标准库提供了 系统管理、网络通信、文本处理、数据库接口、图形系统、XML 处理 等额外的功能
Python 社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖 科学计算、人工智能、机器学习、Web 开发、数据库接口、图形系统 多个领域 -
Python的优缺点
优点
a. 简单、易学
b. 免费、开源
c. 面向对象
d. 丰富的库
e. 可扩展性
如果需要一段关键代码运行得更快或者希望某些算法不公开,可以把这部分程序用 C 或 C++ 编写,然后在 Python 程序中使用它们
……
缺点
a. 运行速度
b. 国内市场较小
c. 中文资料匮乏
-
Centos7安装Python3的方法(使用conda安装吧)
链接:https://www.cnblogs.com/s-seven/p/9105973.html
windows虚拟环境搭建链接:https://blog.csdn.net/qq_33404767/article/details/86479820 -
算术运算符
// 取整除 返回除法的整数部分(商) 9 // 2 输出结果 4
- 处理乘法运算外,还能拼接字符串
- 变量的基本使用
在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建
5.1. 变量的类型
在 Python 中定义变量是 不需要指定类型(在其他很多高级语言中都需要)
数据类型可以分为 数字型 和 非数字型
数字型
整型 (int)
浮点型(float)
布尔型(bool)
真 True 非 0 数 —— 非零即真
假 False 0
复数型 (complex)
主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题
非数字型
字符串
列表
元组
字典
使用 type 函数可以查看一个变量的类型
5.2. 变量格式化输出
在 Python 中可以使用 print 函数将信息输出到控制台
如果希望输出文字信息的同时,一起输出 数据,就需要使用到 格式化操作符
% 被称为 格式化操作符,专门用于处理字符串中的格式
包含 % 的字符串,被称为 格式化字符串
% 和不同的 字符 连用,不同类型的数据 需要使用 不同的格式化字符
格式化字符 含义
%s 字符串
%d 有符号十进制整数,%06d 表示输出的整数显示位数,不足的地方使用 0 补全
%f 浮点数,%.2f 表示小数点后只显示两位
%% 输出 %
a. 定义字符串变量 name,输出 我的名字叫 小明,请多多关照!
b. 定义整数变量 student_no,输出 我的学号是 000001
c. 定义小数 price、weight、money,输出 苹果单价 9.00 元/斤,购买了 5.00 斤,需要支付 45.00 元
d. 定义一个小数 scale,输出 数据比例是 10.00%
print(“我的名字叫 %s,请多多关照!” % name)
print(“我的学号是 %06d” % student_no)
print(“苹果单价 %.02f 元/斤,购买 %.02f 斤,需要支付 %.02f 元” % (price, weight, money))
print(“数据比例是 %.02f%%” % (scale * 100))
- 判断语句
6.1. 需求
6.1.1. 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
6.1.2. 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能
6.1.3. 比较胜负
6.2. 基础代码实现
# 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
player = int(input(“请出拳 石头(1)/剪刀(2)/布(3):”))
# 电脑 随机 出拳 - 假定电脑永远出石头
computer = 1
# 比较胜负
# 如果条件判断的内容太长,可以在最外侧的条件增加一对大括号
# 再在每一个条件之间,使用回车,PyCharm 可以自动增加 8 个空格
if ((player == 1 and computer == 2) or
(player == 2 and computer == 3) or
(player == 3 and computer == 1)):
print("噢耶!!!电脑弱爆了!!!")
elif player == computer:
print("心有灵犀,再来一盘!")
else:
print("不行,我要和你决战到天亮!")
6.3. 随机数的处理
在 Python 中,要使用随机数,首先需要导入 随机数 的 模块 —— “工具包”
import random
导入模块后,可以直接在 模块名称 后面敲一个 . 然后按 Tab 键,会提示该模块中包含的所有函数
random.randint(a, b) ,返回 [a, b] 之间的整数,包含 a 和 b
例如:
random.randint(12, 20) # 生成的随机数n: 12 <= n <= 20
random.randint(20, 20) # 结果永远是 20
random.randint(20, 10) # 该语句是错误的,下限必须小于上限
- 循环语句(九九乘法表)
row = 1
while row <= 9:
col = 1
# 最大打印row列
while col <= row:
# end = “”,表示输出结束后,不换行
# “\t” 可以在控制台输出一个制表符,协助在输出文本是对齐
print("%d * %d = %d" % (col, row, row * col), end=" ")
col += 1
print("")
row += 1
//===========================================================================================================
students = [
{“name”: “阿土”,
“age”: 20,
“gender”: True,
“height”: 1.7,
“weight”: 75.0},
{“name”: “小美”,
“age”: 19,
“gender”: False,
“height”: 1.6,
“weight”: 45.0},
]
find_name = “阿土”
for stu_dict in students:
print(stu_dict)
# 判断当前遍历的字典中姓名是否为find_name
if stu_dict["name"] == find_name:
print("找到了")
# 如果已经找到,直接退出循环,就不需要再对后续的数据进行比较
break
else:
print(“没有找到”)
print(“循环结束”)
- 函数基础
- 高级变量
列表
尽管 Python 的 列表 中可以 存储不同类型的数据
但是在开发中,更多的应用场景是 - 列表 存储相同类型的数据
- 通过 迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
元组
元组和列表之间的转换
使用 list 函数可以把元组转换成列表
list(元组)
使用 tuple 函数可以把列表转换成元组
tuple(列表)
字典
字符串
切片
切片 方法适用于 字符串、列表、元组
a. 切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串
b. 列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据
c. 字典 是一个 无序 的集合,是使用 键值对 保存数据
-
- 截取从 2 ~ 5 位置 的字符串
-
- 截取从 2 ~ 末尾 的字符串
-
- 截取从 开始 ~ 5 位置 的字符串
-
- 截取完整的字符串
-
- 从开始位置,每隔一个字符截取字符串
-
- 从索引 1 开始,每隔一个取一个
-
- 截取从 2 ~ 末尾 - 1 的字符串
-
- 截取字符串末尾两个字符
-
- 字符串的逆序(面试题)
num_str = “0123456789”
1. 截取从 2 ~ 5 位置 的字符串
print(num_str[2:6])
2. 截取从 2 ~ 末尾
的字符串
print(num_str[2:])
3. 截取从 开始
~ 5 位置 的字符串
print(num_str[:6])
4. 截取完整的字符串
print(num_str[:])
5. 从开始位置,每隔一个字符截取字符串
print(num_str[::2])
6. 从索引 1 开始,每隔一个取一个
print(num_str[1::2])
倒序切片
-1 表示倒数第一个字符
print(num_str[-1])
7. 截取从 2 ~ 末尾 - 1
的字符串
print(num_str[2:-1])
8. 截取字符串末尾两个字符
print(num_str[-2:])
9. 字符串的逆序(面试题)
print(num_str[::-1])
变量进阶
使用 id()
函数可以查看变量中保存数据所在的 内存地址
在 Python 中,函数的 实参/返回值 都是是靠 引用 来传递来的
def test(num):
print("-" * 50)
print("%d 在函数内的内存地址是 %x" % (num, id(num)))
result = 100
print("返回值 %d 在内存中的地址是 %x" % (result, id(result)))
print("-" * 50)
return result
a = 10
print(“调用函数前 内存地址是 %x” % id(a))
r = test(a)
print(“调用函数后 实参内存地址是 %x” % id(a))
print(“调用函数后 返回值内存地址是 %x” % id®)
全局变量和局部变量
num = 10
def demo1():
print("demo1" + "-" * 50)
# global 关键字,告诉 Python 解释器 num 是一个全局变量
global num
num = 100
print(num)
def demo2():
print("demo2" + "-" * 50)
print(num)
demo1()
demo2()
print(“over”)
函数进阶
函数返回多个值
def measure():
“”“返回当前的温度”""
print("开始测量...")
temp = 39
wetness = 10
print("测量结束...")
return temp, wetness
temp, wetness = measure()
print(temp)
print(wetness)
交换两个数
解法 1 —— 使用其他变量
# 解法 1 - 使用临时变量
c = b
b = a
a = c
解法 2 —— 不使用临时变量
# 解法 2 - 不使用临时变量
a = a + b
b = a - b
a = a - b
解法 3 —— 异或运算
a = a ^ b
b = a ^ b
a = a ^ b
解法 4 —— Python 专有,利用元组
a, b = b, a
面试题 —— +=
def demo(num, num_list):
print("函数内部代码")
# num = num + num
num += num
# num_list.extend(num_list) 由于是调用方法,所以不会修改变量的引用
# 函数执行结束后,外部数据同样会发生变化
num_list += num_list
print(num)
print(num_list)
print("函数代码完成")
gl_num = 9
gl_list = [1, 2, 3]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)
多值参数
有时可能需要 一个函数 能够处理的参数 个数 是不确定的,这个时候,就可以使用 多值参数
python 中有 两种 多值参数:
参数名前增加 一个 * 可以接收 元组
参数名前增加 两个 * 可以接收 字典
一般在给多值参数命名时,习惯使用以下两个名字
*args —— 存放 元组 参数,前面有一个 *
**kwargs —— 存放 字典 参数,前面有两个 *
args 是 arguments 的缩写,有变量的含义
kw 是 keyword 的缩写,kwargs 可以记忆 键值对参数
def demo(num, *args, **kwargs):
print(num)
print(args)
print(kwargs)
demo(1, 2, 3, 4, 5, name=“小明”, age=18, gender=True)
元组和字典的拆包
def demo(*args, **kwargs):
print(args)
print(kwargs)
需要将一个元组变量/字典变量传递给函数对应的参数
gl_nums = (1, 2, 3)
gl_xiaoming = {“name”: “小明”, “age”: 18}
会把 num_tuple 和 xiaoming 作为元组传递个 args
demo(gl_nums, gl_xiaoming)
demo(*gl_nums, **gl_xiaoming)
- python特殊函数 str(self)和__repr__(self)
https://blog.csdn.net/liuweiyuxiang/article/details/84555544