一、虚拟环境的创建
1.查看已存在的虚拟环境:conda env list
2.创建虚拟环境:conda create -n 虚拟环境名 python==其版本
3.激活虚拟环境:conda activate 虚拟环境名
4.安装其他的库:pip install 安装内容
5.查看已安装的库:pip list或conda list
6.退到主环境:conda deactivate
7.删除虚拟环境:conda env remove –name 虚拟环境名
二、常识
1.命名规则:
1.命名文件名建议只是用小写字母、数字和下划线
2.文件名不能以数字开始
2.注释:
1.单行注释
以#开头,#右边的所有东西都被当作说明文字,为保证程序的可读性,在#后要添加一个空格
2.多行注释
一对三个引号
"""
这是一个多行注释
在多行注释之间,可以写很多内容
"""
print("Hello Python")
3.变量:
1.变量定义
在Python中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建
等号(=)用来给变量赋值,=左边是一个变量名,=右边是存储在变量中的值
# 定义qq_number的变量用来保存 qq号码
qq_number = "1234567"
# 输出 qq_number中保存的内容
print(qq_number)
# 定义苹果价格变量
price = 8.5
# 定义购买重量
weight = 7.5
# 计算金额
money = price * weight*
# 只要买苹果就返 5 元
money = money - 5
# 输出价格
print(money)
小结:变量名 只有在第一次出现 才是 定义变量,变量名 再次出现,不是定义变量,而是直接使用之前定义过的变量
2.变量的类型:
- 数字型,整型(int)、浮点型(float)、布尔型(bool)、复数型(complex)(主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题)
- 非数字型:字符串、列表、元组、字典
3.使用type函数查看变量类型
In [1]: type(name)
Out [1]: str
4.在Python中定义变量时需要指定数据类型吗?
回答:不需要,Python可以根据=等号右侧的值,自动推导出变量中存储的数据类型
变量是没有类型的,但是他存储的数据是有类型的。
5.变量的输入
类型转换函数
- int(x) 将 x 转换为一个整数
- float(x)将 x 转换到一个浮点数
- str(x)将 x 转换到一个字符串
6.标识符
- 标识符可以由 字母、下划线 和 数字 组成
- 不能以数字开头
- 大小写敏感
- 不能与关键字重名
- 不推荐使用中文
7.运算符
1.比较运算符
| 运算符 | 描述 |
== | 检查两个操作数的值是否 相等,如果是,则条件成立,返回True |
!= | 检查两个操作数的值是否 不相等,如果是,则条件成立,返回True |
> | 检测左操作数的值是否 大于 右操作数的值,如果是,则条件成立,返回True |
< | 检测左操作数的值是否 小于 右操作数的值,如果是,则条件成立,返回True |
>= | 检测左操作数的值是否 大于等于 右操作数的值,如果是,则条件成立,返回True |
<= | 检测左操作数的值是否 小于等于 右操作数的值,如果是,则条件成立,返回True |
2.算数(数学)运算符
- //取整数
- **指数
3.逻辑运算符
and、or、not
4.赋值运算符
在算术运算时,为了简化代码的编写,Python还提供了一系列的 与 算数运算符 对应的 赋值运算符
注意:赋值运算符中间不能使用空格
| 运算符 | 描述 | 实例 |
| – | 简单的赋值运算符 | |
| += | 加法赋值运算符 | |
| -= | 减法赋值运算符 | |
| *= | 乘法赋值运算符 | |
/= | 除法赋值运算符 | |
| //= | 取整除赋值运算符 | |
| %= | 取模(余数)赋值运算符 | |
| **= | 幂赋值运算符 |
8.字符串扩展
1.字符串的拼接——+号拼接
name="king"
print("我是"+name+"很菜")
- 字符串是无法单独同整数等直接进行拼接的
2.字符串的格式化
| 格式化字符 | 含义 |
| %s | 字符串 |
| %d | 有符号的十进制整数,%06d表示输出显示位数,不足地方使用0补全 |
| %f | 浮点数,%.2f表示只显示小数点后两位 |
| %% | 输出% |
name = "小明"
print("我的名字叫 %s ,请多多关照!" % name)
# output:我的名字叫小明,请多多关照!
#字符串与数字拼接
class_num=57
avg_salary=16781 # 此数数字变成了字符串进行拼接
message = "python大数据学科,北京%s期,毕业平均工资:%s"%(class_num,avg_salary)
#output:python大数据学科,北京57期,毕业平均工资:16781
3.快速字符串格式
f”内容{变量}”的格式来快速格式化
p
print(f"我是{name}我成立于:{set_up_year}我今天的股票价格是:{stock_price}")
4.格式化精度控制
- %5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成**【空格】【空格】【空格】11**,用3个空格补足宽度
- %5.2f:表示将宽度控制为5,将小数点的精度设置为2
price = 9.00
weight = 5.00
money = price * weight
print("苹果单价 %.2f元/斤, 购买了%.3f斤, 需要支付%.4f元" % (price, weight, money))
#output 苹果单价 9.00元/斤, 购买了5.000斤, 需要支付45.0000元
5.表达式的格式化
print("1*1的结果是:%d"%(1*1))
print("字符串在Python中的类型名是:%s"% type("字符串"))
#output:1*1的结果是:1
#字符串在Python中的类型名是:<class 'str'>
name="传智播客"
stock_price=19.99
stock_code="003032"
stock_price_daily_growth_factor =1.2
growth_days=7
finally_stock_price=stock_price*stock_price_daily_growth_factor**growth_days
print(f"公司:{name},股票代码:{stock_code},当前股价:{stock_price}")
print("每日增长系数:%.1f,经过%d天的增长后,股价达到了:%.2f"%(stock_price_daily_growth_factor,growth_days,finally_stock_price ))
#output:公司:传智播客,股票代码:003032,当前股价:19.99
#每日增长系数:1.2,经过7天的增长后,股价达到了:71.63
9.数据输入–input
无论键盘输入什么类型的数据,获得的永远都是字符串类型
print ("请告诉我你是谁")
name=input()#等价于input(请告诉我你是谁)
print("我知道你是%s"% name)
input:king
output:我知道你是king
10.随机数
import random
num = radom.randint(a, b) #返回 [a, b] 之间的整数,包含 a 和 b
4.python判断语句
1.if语句的基本格式
if 要判断的条件:
条件成立时,要做的事情 # 要有4个空格做缩进
...
# 如果没有缩进 就不属于if的控制范围
不要忘记判断条件后的:冒号
age=int(input("请输入你的年龄:"))
if age>=18:
print("您已成年,游玩要补票10元。")
print("祝您游玩愉快"
"""
output:请输入你的年龄:18
您已成年,游玩要补票10元。
祝您游玩愉快
"""
2.if else语句
3.if elif else
if 条件1:
条件1满足执行的代码
...
elif 条件2:
条件2满足执行的代码
...
elif 条件3:
条件3满足执行的代码
...
else:
以上条件都不满足时,执行代码
...
可以将 if, elif 和 else 以及各自缩进的diamagnetic,看成一个完整的代码块
4.if的嵌套
has_ticket = True
knife_length = 15
if has_ticket:
print("车票检查通过,准备开始安检")
if knife_length <= 20:
print("安检通过,祝您旅途愉快")
else:
print("携带道具长度为 %d厘米" % knife_length)
print("不允许上车")
else:
print("请先买票!")
5.综合实战
# 导入随机工具包
import random
player = int(input("请输入您出的拳 石头(1)/剪刀(2)/布(3): "))
computer = random.randint(1, 3)
print("玩家出的拳头是 %d - 电脑出的拳是 %d" % (player, computer))
# 玩家胜利的三种情况
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("电脑获胜!")
5.python循环语句
1.while循环的基本使用
初始条件设置 - 通常是重复执行的 计数器
while 条件(判断 计数器 是否达到 目标次数):
条件满足时,做的事情1
条件满足时,做的事情2
...(省略)...
处理条件(计数器 + 1)
2.while 循环嵌套
while 条件1:
条件满足时,做的事情1
条件满足时,做的事情2
...(省略)...
while 条件2:
条件满足时,做的事情1
条件满足时,做的事情2
...(省略)...
处理条件2
处理条件1
经典案例——99乘法表
i=1
while i<10:
j=1
while j<=i:
print(f"{j}*{i} = {j*i}\t",end=' ')
j+=1
print('')
i+=1
#output:
1*1 = 1
1*2 = 2 2*2 = 4
1*3 = 3 2*3 = 6 3*3 = 9
1*4 = 4 2*4 = 8 3*4 = 12 4*4 = 16
1*5 = 5 2*5 = 10 3*5 = 15 4*5 = 20 5*5 = 25
1*6 = 6 2*6 = 12 3*6 = 18 4*6 = 24 5*6 = 30 6*6 = 36
1*7 = 7 2*7 = 14 3*7 = 21 4*7 = 28 5*7 = 35 6*7 = 42 7*7 = 49
1*8 = 8 2*8 = 16 3*8 = 24 4*8 = 32 5*8 = 40 6*8 = 48 7*8 = 56 8*8 = 64
1*9 = 9 2*9 = 18 3*9 = 27 4*9 = 36 5*9 = 45 6*9 = 54 7*9 = 63 8*9 = 72 9*9 = 81
3.for循环
for 临时变量in待处理数据集:
循环满足条件时执行的代码
#例
name="king"
for i in name:
print(i)
4.range语句
- 语法中的待处理数据集严格的来说称为序列类型
- 序列类型指,其内容可以一个个依次取出来的一种类型包括:1.字符串2.列表3.元组······
range(num):获取一个从0开始,到num结束的数字序列(不含数字本身)
range(num1,num2):获得一个从num1开始到num2结束的数字序列(不含num2本身)
range(num1,num2,step):是从num1到num2(不包括num2)获取数字序列,步长以step为准(step默认为一)
5.for循环的嵌套
for 临时变量in待处理数据集:
循环满足条件时执行的代码
6.循环综合案例–发工资案例
money=10000
for i in range(1,21):
import random
num = random.randint(1, 10)
print(f"员工的绩效为{num}")
if num<5: print(f"员工{i}绩效分{num}不满足,不发工资,下一位") continue if money>=1000:
money-=1000
print(f"员工{i}绩效分满足发放工资1000,公司账户余额:{money}")
else:
print(f"余额不足,当前余额{money}元,不发了,下个月再来")
break
三.python函数
1.基础认识
所谓 函数,就是把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用
函数的使用包含两个步骤:
1.定义函数 – 封装 独立的功能
2.调用函数 – 享受 封装 的成果
函数的作用,在于开发程序时,使用函数可以提高缩写的效率以及代码的 重用
2.函数的定义
def 函数名():
函数封装的代码
...
1.def 是英文 define 的缩写
2.函数名称 应该能够表达 函数封装代码 的功能,方便后续使用
3.函数名称 的命名应该 符合 标识符的命名规则
- 可以由 字母,下划线 和 数字 组成
- 不能以数字开头
- 不能与关键字重名
例如
name = "小明"
# Python 解释器知道下方定义了一个函数
def say_hello():
print("hello 1")
print("hello 2")
print("hello 3")
print(name)
# 只有在程序中,主动调用函数,才会让函数执行
say_hello()
print(name)
3.函数的参数
形参和实参
- 形参 定义 函数时,小括号中的参数,是用来接受参数用的,在函数内部 作为变量使用
- 实参:调用 函数时,小括号中的参数,是用来把数据传递到 函数内部 用的
def sum_2_num(num1, num2):
"""对两个数字求和"""
return num1 + num2
# 调用函数,并使用 result 变量接受计算结果
result = sum_2_num(10, 20)
print("计算结果是 %d" % result)
4.函数的返回
在程序开发中,有时候,会希望 一个函数执行结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的处理。return 表示返回,后续代码都不会被执行
None类型
- 用在函数无返回值上,可以用到if的判断上,None等同于False,用在声名无内容上。
函数的说明文档
def check(a):
"""
可用于解释函数作用
:param a: 解释参数意义
:return: 解释返回值意义
"""
函数的嵌套调用
调用会首先执行test1的内容再接着继续执行test2剩下的内容
def test1():
print("*" * 50)
print("test 1")
print("*" * 50)
def test2():
print("-" * 50)
print("test 2")
test1()
print("-" * 50)
test2()
#output:
--------------------------------------------------
test 2
**************************************************
test 1
**************************************************
--------------------------------------------------
变量的作用域
1.局部变量
- 定义在函数体内部的变量,只在函数体内生效
- 作用:在函数运行,函数调用变量,运行完销毁变量
2.全局变量
函数体内外都能生效的变量
3.将函数内声明变量为全局变量才能修改值
global 关键字
综合案例
money=5000000
name=None
name=input("请输入您的姓名:")
def query(show_header):
if show_header:
print("---------查询余额---------")
print(f"{name},您好,您的余额剩余:{money}元")
def saving(num):
global money #将money在函数内部定义为全局变量
money+=num
print("---------存款---------")
print(f"{name},您好,您存款:{num}元成功")
query(False)
def get_money(num):
global money # 将money在函数内部定义为全局变量
money -= num
print("---------取款---------")
print(f"{name},您好,您取款:{num}元成功")
query(False)
def main():
print("---------主菜单---------")
print(f"{name},您好欢迎来到atm,请输入您想操作的步骤")
print("查询余额\t\t[输入1]")
print("存款\t\t[输入2]")
print("取款\t\t[输入3]")
print("退出\t\t[输入4]")
choice=input("请输入你的选择:")
return choice
while True:
key=main()
if key=="1":
query(True)
continue
elif key=="2":
num=int(input("您想要存入多少钱:"))
saving(num)
continue
elif key=="3":
num = int(input("您想要取出多少钱:"))
get_money(num)
continue
else :
print("程序退出")
break
python数据容器
可以容纳多份数据的数据类型
1.列表
列表的定义
列表用 [] 定义,数据之间使用 , 分隔
name_list = ["zhangsan", "lisi", "wangwu"]
1.1.列表的下标索引
- 列表的索引从0开始
- 索引 就是数据在 列表 中的位置编号,索引 又可以被称为 下标
- 最后一个元素的下标是-1
1.2.列表的常用方法
| 增加 | list.insert(索引,数据) | 在指定位置插入数据 |
list.append(数据) | 在末尾追加数据 | |
list.extend(列表2) | 将列表2的数据追加到列表 | |
| 修改 | list[索引] = 数据 | 修改指定索引的数据 |
| 删除 | del list[索引] | 删除指定索引的数据 |
list.remove[数据] | 删除第一个出现的指定数据 | |
list.pop() | 删除末尾数据 | |
list.pop(索引) | 删除指定索引数据 | |
list.clear() | 清空列表 | |
| 统计 | len(list) | 列表长度 |
list.count(数据) | 数据在列表中出现的次数 | |
| 排序 | list.sort() | 升序排序 |
list.sort(reverse=True) | 降序排序 | |
list.reverse() | 逆序、反转 | |
| 查询 | list.index() | 查找指定元素的下标 |
- 使用
del关键字(delete) 同样可以删除列表中元素 del关键字本质上是用来 将一个变量从内存中删除的- 如果使用
del关键字将变量从内存中删除出,后续代码就不能再使用这个变量了
1.3.list(列表)的遍历
- 遍历就是从头到尾依次从列表中获取数据
- 在循环内部针对每一个元素,执行相同的操作
- 在
Python中为了提高列表的遍历效率,专门提供的 迭代 iteration 遍历
1.4.使用 for 实现迭代遍历
name_list = ["小李广-花荣", "呼保义-宋江", "玉麒麟-卢俊义", "黑旋风-李逵"]
# 使用迭代遍历列表
"""
顺序从列表中依次获取数据,每一次循环过程中,数据都会保存在my_name 这个变量中,
在循环体内部可以访问当前这一次获取到的数据
"""
for my_name in name_list:
print("我的名字是 %s" % my_name)
1.5.使用while实现迭代遍历
index=0
while index<len(mylist):
print(```)
index+=1
- 列表中可以存储不同类型的数据
- 在开发中,更多的应用场景是
- 列表存储相同类型的数据
- 通过迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
2.元组
- 不同于列表——一旦定义完成不可修改
- 但是元组里嵌套一个list里的值是可以修改的
2.1元组的定义
- 元组表示多个元素组成的序列
- 元组在
Python开发中,有特定的应用场景 - 用于存储一串信息,数据之间使用
,分隔 - 元组用
**()**定义 - 元组的索引从0开始
info_tuple = ("zhangsan", 18, 1.75)
创建空元组
tuple = () # 也可是t0=tuple()
元组中只包含一个元素时,需要在元素后面添加逗号
single_tuple = ("zhangsan",)
类的概念:https://blog.csdn.net/weixin_40141628/article/details/141439896
字典:https://blog.csdn.net/2301_82000445/article/details/137353411
字典2:https://blog.csdn.net/qq_45096273/article/details/107446492
python中的self:https://baijiahao.baidu.com/s?id=1792013622813378144&wfr=spider&for=pc
