python学习笔记

python学习笔记

2022-1-25
1.基础语法
1.1 print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=“”:
区分大小写

务必注意:Python程序是大小写敏感

x="a"
y="b"

print( x, end=" " )
print( y, end=" " )

1.2 在 python 用 import 或者 from…import 来导入相应的模块
将整个模块(somemodule)导入,格式为: import somemodule
从某个模块中导入某个函数,格式为: from somemodule import somefunction

1.3 Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)

数字(Number)类型:int (整数),bool (布尔),float (浮点数),complex (复数)

数值运算:

2 / 4  # 除法,得到一个浮点数=0.5
2 // 4 # 除法,得到一个整数=0
2 ** 5 # 乘方=32

Python可以同时为多个变量赋值,如a, b = 1, 2

Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型

字符串:索引值以 0 为开始值,-1 为从末尾的开始位置。
python学习笔记_第1张图片
1.4 python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {}
同一个代码块的语句必须包含相同的缩进空格数

if True:
    print ("True")
else:
    print ("False")

1.5 等待用户输入
按回车键后结束

input("\n\n按下 enter 键后退出。")

1.6 数据类型转换
整型与浮点相加,Python 会自动将结果转换为浮点型

1.6.1 强制类型转换

int() 强制转换为整型:

y = int(2.8) # y 输出果为 2
z = int("3") # z 输出果为 3

str() 强制转换为字符串类型:

y = str(2)    # y 输出果为 '2'
z = str(3.0)  # z 输出果为 '3.0'

1.7.Python 推导式
[结果表达式 for 变量(i) in 列表 if 条件]

#1-30中能被3整除结果加1
x=[i+1 for i in range(30) if i%3==0]
print(x)
#[1, 4, 7, 10, 13, 16, 19, 22, 25, 28]
dic = {x: x**2 for x in (2, 4, 6)}
print(dic)
{2: 4, 4: 16, 6: 36}

1.8.注释
多行注释用三个单引号 ‘’’ 或者三个双引号 “”" 将注释括起来

1.9.位运算
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1

<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0

a = 60            # 60 = 0011 1100 
b = 13            # 13 = 0000 1101 
c = 0

c = a & b        # 12 = 0000 1100

1.10 逻辑运算
x and y:
and符连接两个值时,如果前边的值是真,那么无论后边的值是什么都返回后边的值,如果前边的值是假,那么说明后边的值无论是什么结果都会是假,所以返回的是第一个值;

x or y:
or连接时,如果第一个值为真,那么无论第二个值是什么都会是真所以第二个值不会判断,直接返回第一个值,如果第一个值为假,那么直接返回第二个值,因为第二个值决定了最后的结果

注意:数字只有0是False,其他都是True

1.11:is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

1.12 列表:list是一种有序的集合

 classmates = ['Michael', 'Bob', 'Tracy']
 classmates.pop() #要删除list末尾的元素
 classmates.pop(1) #删除指定位置的元素
 classmates.insert(1, 'Jack') #把元素插入到指定的位置

1.13 元组tuple: 一旦初始化就不能修改

因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple

classmates = ('Michael', 'Bob', 'Tracy')

1.14 for 循环
for x in …循环就是把每个元素代入变量x,然后执行缩进块的语句

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)

1.15 键值对:内置了字典:dict

d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
d['Michael'] # 95
d.get('Michael') # 95
d.pop('Bob') #删除一个key

dict是用空间来换取时间的一种方法
dict的key必须是不可变对象

1.16 set集合
key不能重复

s = set([1, 2, 3])
s.add(4)

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作

2 函数

定义一个函数要使用def语句

def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x

2.1 空函数

def nop():
    pass

2.2 参数检查
只允许整数和浮点数类型的参数,传入错误的参数类型,函数就可以抛出一个错误

def my_abs(x):
    if not isinstance(x, (int, float)):
        raise TypeError('bad operand type')
    if x >= 0:
        return x
    else:
        return -x

默认参数可以简化函数的调用
def power(x, n=2):

2.3键鼠操作
导入第三方库pyautogui,pywin32
1.下载对应的whl文件
国内镜像地址

python学习笔记_第2张图片
cp310 是自己的python版本3.10 win_amd64 指的是64位系统

2.管理员打开cmd,进入到下载目录

pip install pywin32-302-cp310-cp310-win_amd64.whl

键鼠基本操作

import pyautogui as pg

 #移动鼠标到指定位置花费0.2秒
 pg.moveTo(496, 403, duration=0.2)
 #双击鼠标左键
 pg.doubleClick()
 #右键单击
 pg.rightClick()
 #左键单击
 pg.leftClick()
 #打印鼠标位置
 print(pg.position())
 #延时1秒
pg.sleep(1)

# 指定位置单击左键
pg.click(10, 10, button='left')  
# 向下滚动300个单位
pg.scroll(-300)  

pg.mouseDown()  # 鼠标按下
pg.sleep(1)
pg.mouseUp()  # 鼠标释放

#控制鼠标拖动到指定坐标位置
pg.dragTo(100,300,duration=1)

#按键Enter1次
pg.press("Enter", 1)
#按下
pg.keyDown("Space", 1)
#弹起
pg.keyUp("Space", 1)

# 组合建这个函数可以接受多个参数
pg.hotkey('ctrl', 'a')

窗口基本操作

import win32gui as wg
import win32con as wc
import win32api as wa

# 通过(类名,标题)找窗口 标题可以为None
hwnd = wg.FindWindow("Notepad", None)
# SW_SHOWNORMAL 激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺
wg.ShowWindow(hwnd, wc.SW_SHOWNORMAL)
# 设置为最前窗口
wg.SetForegroundWindow(hwnd)
# 设置为后台
wg.SetBkMode(hwnd, wc.TRANSPARENT)
#移动窗口到0,0位置(0,0)有偏差实际位置为10,0
    rect = wg.GetWindowRect(hwnd)
    # print(wg.GetWindowRect(hwnd))
    w = rect[2] - rect[0]
    h = rect[3] - rect[1]
    # 移动窗口到0,0,并调整w,h
    wg.MoveWindow(hwnd, -10, 0, w, h, True)

找图
需要有依赖包opencv,不然会报错,安装方式如上一样
opencv-pyhton的安装需要依赖已有的numpy

import pyautogui as pg
import time
import win32gui as wg
import win32con as wc
#region区域(x,y,宽度,高度)x,y范围左上角坐标confidence相似度 grayscale=True可以实现灰度匹配
btm = pg.locateOnScreen("pic/2.bmp", region=(10, 537, 713, 537), confidence=0.7)
print(btm)
# 找到传回图片的中心点,并传回坐标
goto_pos = pg.center(btm)
print(goto_pos)
pg.moveTo(goto_pos, duration=0.2)

3.安装驱动级键鼠

pip install pywinio

图形界面问题记录:
1.使用PyQt5 写图形程序时报错
This application failed to start because no Qt platform plugin could be initialized
python学习笔记_第3张图片
一个简单的测试图形界面

import sys
import pyautogui as pg
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton, QPlainTextEdit

def select1():
    print("select")
    pass


if __name__ == "__main__":
    app = QApplication(sys.argv)

    w = QMainWindow()
    w.setWindowTitle("下载")  # 设置窗口标题
    w.resize(500, 400)  # 设置窗口大小
    btn_select = QPushButton('查询', w)
    btn_select.move(380, 80)  # 控件显示的位置
    btn_select.clicked.connect(select1)
    # 展示窗口
    w.show()
    # 程序进行循环等待状态
    sys.exit(app.exec())

之前也重新将PyQt5,pyqt5_tools安装和卸载,或者配置环境变量,也都没有用
后来发现PyQt5,pyqt5_tools 包中没有designer.exe,所以可能是没有下完整
解决方法:
现在的designer.exe环境都在PySide6模块中

pip install PySide6 -i https://pypi.tuna.tsinghua.edu.cn/simple

将PyQt5替换成PySide6 即可

from PySide6.QtWidgets import QApplication

2.使用requests库发送https请求报错:SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED]

解决方法:用verify=False 去掉https 的验证

response=requests.get(mp3_url2,headers=headers2,data=params,verify=False) #去掉https 的验证
    print(response)
    data=response.text

3.多个关联py文件打包成exe

在项目文件夹下cmd
安装pyinstaller 模块

pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple

执行命令生成配置文件

pyi-makespec -F main.py

记事本打开生成的main.spec文件,添加其余的py文件修改console=False和ico图标地址(其中datas为静态资源路径)
python学习笔记_第4张图片
执行命令pyinstaller main.spec进行打包,生成可执行文件

pyinstaller main.spec

你可能感兴趣的:(笔记,python,学习,开发语言)