Python-笔记
[toc]
一、Python语言基础
注释:
在Python 中单行注释使用# 注释内容
,多行注释使用三引号“"” 注释内容 """
。
缩进:使用四个空格。
导包:
import random
import random as rd
from request import requests
换行写代码:
1 | str = " 这是第1行代码 \ |
1、标准输入输出
1.1 输出 print()
Python 属于print()
函数输出,input()
函数输入。
1 | def main(): |
格式化-输出:
1 | # 这是格式化输出:21,张三,32.88 |
指定分隔符-输出:
1 | # 原始输出: |
居中-输出:
1 |
|
1.2 输入input()
input()
函数输入的是字符串,可以使用eval()
函数将输入的字符串转化为去掉双引号的类型。
1 | # 输入“张三” =转化=》“张三” |
2、查看数据类型
Python 中的变量在使用的时候,不需要像C、Java那样使用数据类型来声明。使用type()
函数可以查看数据的数据类型。
8 种数据类型:int、float、str、list列表、turple元组、dict字典、set集合、bool。
1 | # <class 'int'> |
2、变量与常量
Python 中没有专门的常量,一般将变量名大写来区分变量和常量。
- 变量:
my_age
- 常量:
MY_AGE
变量的命名规则:字母、数字、下划线,严格区分大小写,不能为保留字。
一般使用小驼峰法****或者下划线法**命名变量:
- 小驼峰法:
myName
、numOfStu
- 下划线法:
my_name
、num_of_stu
变量的存储:
Python的内存空间分为:
栈、堆
。
栈
:存放变量名堆
:存放内容变量在内存中存储:
id
(相当于内存地址):指向内存的起始地址。type
(相当于数据类型):指向数据类型(变量本身没有数据类型,只能指向Python的数据类型)。value
(数据的值):指向数据的值。
变量的比较(==
与is
):
1 | # "=="运算,比较的是值,两个变量的值相等,则type相同,但id不一定相同,返回True |
Python 中,变量地址是以内容为基准的,只要内容变化,地址一定变化:
1 | x = 1 |
3、运算符
Python 中,没有 C、Java中的自增(i++
)、自减运算(i--
)。
3.1 算术运算符
算术运算符有+
(加)、-
(减)、*
(乘)、/
(除)、%
(模)、**
幂、//
整除
3.2 赋值运算符
运算符 | 实例 |
---|---|
= |
a = 10 |
+= |
a += 10 等价于 a = a + 10 |
-= |
a -= 10 等价于 a = a - 10 |
*= |
a *= 10 等价于 a = a * 10 |
/= |
a /= 10 等价于 a = a / 10 |
//= |
a //= 10 等价于 a = a // 10 |
**= |
a **= 10 等价于 a = a ** 10 |
%= |
a % 10 等价于 a = a % 10 |
1 | a = 10 |
3.3 逻辑运算符
1 | True and True # True |
3.4 位运算符
3.5 成员运算符
1 |
|
3.5 身份运算符
1 | a = "张三" |
3.6 运算符的优先级
4、 流程控制
4.1、 选择结构
单个 if 语句:
1 | if 条件: |
if···else 语句:
1 | if 条件: |
if···elif···else 语句:
1 | if 条件: |
4.2、 循环结构
循环控制:break
、continue
、pass
while 循环:
1 | while 条件: |
for 循环:
1 | for 变量 in 可迭代的对象: |
实例:
1 | for i in range(0,3,1): # range(start,end,step) |
while ···else 循环:【循环结束时,执行else内的语句】
1 | while 条件: |
for···else 循环:【循环结束时,执行else内的语句】
1 | for 变量 in 可迭代的对象: |
5、 基本数据类型
创建数据:变量名 = 值
删除数据:del 变量名
5.1、数值类型
不可变的类型
数值类型包括:
int
:有符号float
:可以用科学计数法(+2.5E3
代表2.5*10^3
)complex
八进制:0o37
十六进制:0xA0F
类型转化函数:
int()
:int(2.14)转化为了2float()
:float(2)转化为了2.0
数学常数【import math
】:
math.pi
math.e
5.1.1 数学函数
5.1.2 三角函数
5.1.3 随机函数
导入import random
包
1 | import random |
5.2、字符串类型
Python 中只有字符串类型,没有字符类型,字符会被当做长度为 1 的字符串。
切片【变量名[start : end+1:步长]
】:
1 | str = "hello world" |
字符串的特殊运算符:
运算符 | 说明 | 实例 |
---|---|---|
+ |
拼接 | “张三”+“12岁" =》“张三12岁" |
* |
重复(其他数据类型也适用) | 张三*2 =》张三张三 |
[] |
取值 | str[0] =》张 |
[:] |
切片 | str1[0:2] =》张三 |
in |
判断字符串是否是子串 | ”张“ in ”张三“ =》True |
not in |
判断字符串是否不是子串 | ”张“ not in ”张三“ =》False |
r |
原样输出(不转义) | r"张\t三" =》张三 |
字符串的格式化:(实例可见1.1小节的print函数)
1 | "格式字符串"%(参数1,参数2) |
格式化符号 | 说明 |
---|---|
%d ,%i |
有符号整数 |
%u |
无符号整数 |
%o |
八进制整数 |
%x |
十六进制整数 |
%f |
浮点数 |
%e |
指数 |
%s |
字符串 |
常用字符串方法(参数均可选):
count(str,start,endLen)
【常用】center(str,start,endLen)
encode(encoding="UTF-8",errors="strict | ignore | replace")
decode(encoding="UTF-8",errors="strict | ignore | replace")
endWith(suffix,start,endLen)
【常用】连接符.join(列表)
【常用】split(str,num)
:分割字符串为 num+1 个子串。【常用】splitLines()
:分割字符串(按回车、换行符)ljust(width,str)
:左对齐,不够宽度时用str填充rjust(width,str)
:右对齐,不够宽度时用str填充find(str,start,,endLen)
:返回目标子串的下标,没找到则返回-1。maketrans(输出表,输出表)
:创建翻译表translate(翻译表,删除表)
:过滤。需要配合maketrans(输出表,输出表)
使用
5.3、列表
列表也就是一个数组,也可以当作栈、队列来用。
1 | # 列表的创建: |
常用函数:
函数 | 说明 | 实例 |
---|---|---|
len(列表) |
求列表中元素的个数 | len([1,2,3]) |
max(列表) |
求最大值 | max([1,2,3]) |
min(列表) |
求最小值 | min([1,2,3]) |
list(元组) |
将元组转化为列表 | list((1,2,3)) |
index(元素) |
返回元素的下标 | arr.index(元素) |
count(元素) |
统计元素出现的次数 | arr.count(3) |
append(元素) |
在末尾添加元素 | arr.append(4) |
extend(列表) |
在末尾添加列表中的所有元素 | arr.extend(['a','b']) |
insert(下标,元素) |
在指定位置插入元素 | arr.insert(0,'zs') |
pop() |
删除末尾的一个元素 | arr.pop |
reverse() |
反转列表 | arr.reverse() |
sort(reverse=False) |
排序,默认升序 | arr.sort() |
列表生成式:
1 | # 格式: |
5.4、元组
元组就是无序的列表
1 | tp = (1,2,3) |
5.5、字典
字典就是哈希表
1 | dic = {'姓名':'zs','年龄':20} |
5.6、集合
集合是无序的,元素不可变。
集合分为:
- set:可变集合
- frozenset:不可变集合
1 | set1 = {1,2,5,4,8,0} |
5.7、深浅拷贝
引用类型-赋值:
对于可变类型,完全数据共享(改变一个,另一个也变)
对于不可变类型,不数据共享(改变一个,另一个不变)
1 | arr1 = [1,2] |
浅拷贝(部分数据共享):
两层列表,浅拷贝只能拷贝第一层,第二次是数据共享的。
1 | from copy import * |
深拷贝:
两层列表,深拷贝完全拷贝数据,之后互不干扰
1 | from copy import * |
二、Tkinter
1、Tkinter 基本使用
1.1、主窗口
1 | # Tkinter 教程:https://zhuanlan.zhihu.com/p/75872830 |
1.2、标签
1 | # Tkinter 教程:https://zhuanlan.zhihu.com/p/75872830 |
1.3、按钮
1 | # Tkinter 教程:https://zhuanlan.zhihu.com/p/75872830 |
1.4、输入框
1 | # Tkinter 教程:https://zhuanlan.zhihu.com/p/75872830 |
输入框+按钮+标签-案例:
(1)效果:
(2)代码:
1 | # Tkinter 教程:https://zhuanlan.zhihu.com/p/75872830 |
1.5、下拉框
1 | # Tkinter 教程:https://zhuanlan.zhihu.com/p/75872830 |
1.6、复选框
1 | # Tkinter 教程:https://zhuanlan.zhihu.com/p/75872830 |
1.7、单选框
1 | # Tkinter 教程:https://zhuanlan.zhihu.com/p/75872830 |
1.8、文本域
1 | from tkinter import * |
1.9、弹窗
1 | from tkinter import * |
1.10、数字输入框
相当于HTML标签中的 <input type="number" />
1 | # Tkinter 教程:https://zhuanlan.zhihu.com/p/75872830 |
1.11、进度条
1 | # Tkinter 教程:https://zhuanlan.zhihu.com/p/75872830 |
1.12、文件对话框
1 | import os |
2、案例
2.1、随机人名生成工具
该工具只完成了两个字的名字的生成。
1 | from tkinter import * |
三、PyInstaller
在纯英文目录下,安装:pip install pyinstaller
1 | pyinstaller -D -p ./ -i ./logo.ico ./myUtils.py --noconsole |