signed

QiShunwang

“诚信为本、客户至上”

全网最全面的python的讲解,讲的无可挑剔《记得收藏》

2021/6/3 13:54:15   来源:

全网最全面的python的讲解,讲的无可挑剔《记得收藏》

  • 目录
    • 1、简介
    • Pyhon中如何文件拷贝
    • Python数学库及其应用
    • Python异常处理机制
    • ETC
    • turtle库的常用指令
    • 使用turtle库绘制五角星
    • 使用turtle库绘制蟒蛇
    • 数据驱动的动态路径绘制
    • 使用蒙特卡洛方法估计圆周率的值
    • 文件循环
    • 图形用户界面
    • 使用graphics库实现交互式多边形绘制
    • 使用TKinter实现简单的聊天界面
    • 使用Turtle库绘制模拟时钟
    • 使用turtle库绘制雪花图
    • Python库
    • OS库常用函数
    • sched库
    • 函数定时执行
    • 打印某一个目录下的全部文件
    • 打包发布python应用程序(使用py2exe库)
    • NumPy库
    • Matplotlib库
    • 使用Matplotlib库绘制曲线
    • 使用Matplotlib子图的功能
    • wxPython
    • 使用wxPython的绝对布局
    • 使用wxPython的相对布局
    • wxPython事件编程
    • Python中的多线程编程
    • scipy库
    • mpl_toolkits库

目录

1、简介

我们简单讲下Python目前市场应用于领域:

  • Web 和 Internet开发
  • 科学计算和统计
  • 人工智能
  • 桌面界面开发
  • 软件开发
  • 后端开发
    2、网络接口:能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。

3、图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。

4、数学处理:NumPy扩展提供大量与许多标准数学库的接口。

5、文本处理:python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。

6、数据库编程:程序员可通过遵循Python DB-API(应用程序编程接口)规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等数据库通信。python自带有一个Gadfly模块,提供了一个完整的SQL环境。

7、网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它。

8、Web编程:应用的开发语言,支持最新的XML技术。

9、多媒体应用:Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。

10、pymo引擎:PYMO全称为python memories off,是一款运行于Symbian S60V3,Symbian3,S60V5, Symbian3, Android系统上的AVG游戏引擎。因其基于python2.0平台开发,并且适用于创建秋之回忆(memories off)风格的AVG游戏,故命名为PYMO。

开始了!!!不废话了
在这里插入图片描述

Pyhon中如何文件拷贝

def main():
    f1 = input("Enter a source file name:").strip()
    f2 = input("Enter a destination file name:").strip()

    infile = open(f1, 'r')
    outfile = open(f2, 'w')

    count_lines = count_chars = 0
    for line in infile:
        count_lines += 1
        count_chars += len(line)
        outfile.write(line)

    print(count_lines, "lines and", count_chars, "chars copied")

    infile.close()
    outfile.close()


main()

Python数学库及其应用

在这里插入图片描述
随机数库及其应用
在这里插入图片描述

Python异常处理机制

Python使用try…except…else…finally,可使程序不因运行错误而崩溃,异常捕获机制可以捕捉任何类型的错误,比如:输入非数值类型(NameError),输入无效的表达式(SyntaxError)等。只有当try中的语句没有发生异常,else语句才会被执行,finally无论有无异常都会被执行:

try:
	<body>except <ErrorType1>:
	<handler1>except <ErrorType2>:
	<handler2>except:
	<handler0>else:
	<process_else>finally:
	<process_finally>

ETC

1.使用同步赋值语句实现x与y的值交换:x,y=y,x。

2.val=pow(2,1000),用一行代码返回val结果的长度值:len(str(val))。

3.布尔运算符的优先级从高到低依次是:not,and,or。

4.对于数字的零值被认为是false,任何非零值都是true。对序列类型来说,空序列被认为是false,非空序列认为是true。

5.常用编码:

  • ASCII码是标准化字符集,用7个二进制位编码表示128个字符。
  • Unicode跨语言,跨平台,同意且唯一的二进制编码,每个字符两个字节长。
  • UTF8编码,可变长度的Unicode,英文对应1个字节,中文对应3个字节。

6.python中字符串类型未编码,可以用encode()进行编码,decode()进行解码。
在这里插入图片描述

turtle库的常用指令

1.turtle库以屏幕中心为坐标原点。

2.forward(distance)将箭头移到某一指定坐标。

3.left(angle)/right(angle)向左/右旋转一个角度。

4.penup()提起笔,用于另起一个地方绘制时使用,与pendown()配对使用。

5.goto(x,y)。

6.home()。

7.circle(radius)。

8.speed()。

使用turtle库绘制五角星

import turtle

p = turtle.Turtle()
p.speed(3)
p.pensize(5)
p.color("black")
p.fillcolor("red")
p.begin_fill()for i in range(5):
    p.forward(200)
    p.right(144)
p.end_fill()

使用turtle库绘制蟒蛇

import turtle
def draw_snake(rad, angle, len, neckrad):
    for i in range(len):
        turtle.circle(rad, angle)
        turtle.circle(-rad, angle)
    turtle.circle(rad, angle, 2)
    turtle.fd(rad)
    turtle.circle(neckrad + 1, 180)
    turtle.fd(rad * 2 / 3)
def main():
    turtle.setup(1300, 800, 0, 0)
    pythonsize = 30
    turtle.pensize(pythonsize)
    turtle.pencolor("blue")
    turtle.seth(-40)
    draw_snake(40, 80, 5, pythonsize / 2)

main()

数据驱动的动态路径绘制

import turtle

def main():
    turtle.title("数据驱动的动态路径绘制")
    turtle.setup(800, 600, 0, 0)

    pen = turtle.Turtle()
    pen.color('red')
    pen.width(5)
    pen.shape("turtle")
    pen.speed(5)

    result = []
    file = open("a.txt", 'r')
    for line in file:
        result.append(list(map(float, line.split(','))))
    print(result)

    for i in range(len(result)):
        pen.color((result[i][3], result[i][4], result[i][5]))
        pen.forward(result[i][0])
        if result[i][1]:
            pen.right(result[i][2])
        else:
            pen.left(result[i][2])

    pen.goto(0, 0)

if __name__ == '__main__':
    main()

使用蒙特卡洛方法估计圆周率的值

from random import *from math import  *from time import *

DARTS = 1000000
hits = 0
clock()for i in range(1,DARTS):
    x,y=random(),random()
    dist = sqrt(x**2+y**2)
    if(dist <= 1.0):
        hits = hits+1
pi = 4*(hits/DARTS)print("Pi的值是:%s"%pi)print("程序运行时间是 %-5.5ss"%clock())
##寻找素数
for n in range(2,100):
    for x in range(2,n):
        if n % x == 0:
            print(n, "equals", x, "*", n//x)
            break;
    else:
        print(n, "is a prime number")

文件循环

def main():
    file_name = input("What's the file path?")
    try:
        infile = open(file_name, 'r')
    except FileNotFoundError:
        print("\nFile not found")
    else:
        msum = 0.0
        count = 0
        line = infile.readline()
        while line != "":
            msum += eval(line)
            count += 1
            line = infile.readline()
        print("\nThe average of the numbers is", msum / count)


main()

图形用户界面

TKinter——Python标准GUI

1、15中常见的Tk控件
在这里插入图片描述
2、3种布局管理方法
在这里插入图片描述
3、控件的共同属性
在这里插入图片描述
Graphics——基于Tkinter扩展

1、GraphWin对象常用方法
在这里插入图片描述
2、图形对象通用方法
在这里插入图片描述
3、Point对象方法
在这里插入图片描述
4、Line对象方法
在这里插入图片描述
5、Circle对象方法
在这里插入图片描述
6、Rectangle对象方法
在这里插入图片描述
7、Oval对象方法 在这里插入图片描述
8、Polygon对象方法
在这里插入图片描述
9、Text对象方法
在这里插入图片描述
Turtle——Python内置的图形库

使用graphics库实现交互式多边形绘制

from graphics import *

def main():
    win = GraphWin("Draw a polygon", 300, 300)
    win.setCoords(0, 0, 300, 300)
    message = Text(Point(150, 20), "CLick on five points")
    message.draw(win)

    p1 = win.getMouse()
    p1.draw(win)
    p2 = win.getMouse()
    p2.draw(win)
    p3 = win.getMouse()
    p3.draw(win)
    p4 = win.getMouse()
    p4.draw(win)
    p5 = win.getMouse()
    p5.draw(win)

    polygon = Polygon(p1, p2, p3, p4, p5)
    polygon.setFill("peachpuff")
    polygon.setOutline("black")
    polygon.draw(win)

    message.setText("Click anywhere to quit.")
    win.getMouse()


main()

使用TKinter实现简单的聊天界面

from tkinter import *import time

def main():
    def send_msg():
        strMsg = "我:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + "\n"
        txtMsgList.insert(END, strMsg, 'greencolor')
        txtMsgList.insert(END, txtMsg.get('0.0', END))
        txtMsg.delete('0.0', END)

    def cancelMsg():
        txtMsg.delete('0.0', END)

    def send_msg_event(event):
        if event.keysym == "Up":
            send_msg()

    # 创建窗口
    t = Tk()
    t.title("与Python聊天中")

    # 创建Frame容器
    frmLT = Frame(width=500, height=320, bg="white")
    frmLC = Frame(width=500, height=150, bg="white")
    frmLB = Frame(width=500, height=30)
    frmRT = Frame(width=200, height=500)

    # 创建控件
    txtMsgList = Text(frmLT)
    txtMsgList.tag_configure("greencolor", foreground="#008c00")  # 创建tag

    txtMsg = Text(frmLC)
    txtMsg.bind("<KeyPress-Up>", send_msg_event)

    btnSend = Button(frmLB, text='发送', width=8, command=send_msg)
    btnCancel = Button(frmLB, text='取消', width=8, command=cancelMsg)

    imgInfo = PhotoImage(file="python.gif")
    lblImage = Label(frmRT, image=imgInfo)
    lblImage.image = imgInfo

    # 窗口布局
    frmLT.grid(row=0, column=0, columnspan=2, padx=1, pady=3)
    frmLC.grid(row=1, column=0, columnspan=2, padx=1, pady=3)
    frmLB.grid(row=2, column=0, columnspan=2)
    frmRT.grid(row=0, column=2, rowspan=3, padx=2, pady=3)

    # 固定大小
    frmLT.grid_propagate(0)
    frmLC.grid_propagate(0)
    frmLB.grid_propagate(0)
    frmRT.grid_propagate(0)

    btnSend.grid(row=2, column=0)
    btnCancel.grid(row=2, column=1)
    lblImage.grid()
    txtMsgList.grid()
    txtMsg.grid()

    t.mainloop()


main()

使用Turtle库绘制模拟时钟

from turtle import *from datetime import *

def Skip(step):
    penup()
    forward(step)
    pendown()

def mkHand(name, length):
    # 注册Turtle形状,建立表针Turtle
    reset()
    Skip(-length * 0.1)
    begin_poly()
    forward(length * 1.1)
    end_poly()
    handForm = get_poly()
    register_shape(name, handForm)

def Init():
    global secHand, minHand, hurHand, printer
    mode("logo")  # 重置Turtle指向北
    # 建立三个表针Turtle并初始化
    mkHand("secHand", 125)
    mkHand("minHand", 130)
    mkHand("hurHand", 90)
    secHand = Turtle()
    secHand.shape("secHand")
    minHand = Turtle()
    minHand.shape("minHand")
    hurHand = Turtle()
    hurHand.shape("hurHand")
    for hand in secHand, minHand, hurHand:
        hand.shapesize(1, 1, 3)
        hand.speed(0)
    # 建立输出文字Turtle
    printer = Turtle()
    printer.hideturtle()
    printer.penup()

def SetupClock(radius):
    # 建立表的外框
    reset()
    pensize(7)
    for i in range(60):
        Skip(radius)
        if i % 5 == 0:
            forward(20)
            Skip(-radius - 20)
        else:
            dot(5)
            Skip(-radius)
        right(6)

def Week(t):
    week = ["星期一", "星期二", "星期三",
            "星期四", "星期五", "星期六", "星期日"]
    return week[t.weekday()]

def Date(t):
    y = t.year
    m = t.month
    d = t.day
    return "%s %d %d" % (y, m, d)

def Tick():
    # 绘制表针的动态显示
    t = datetime.today()
    second = t.second + t.microsecond * 0.000001
    minute = t.minute + second / 60.0
    hour = t.hour + minute / 60.0
    secHand.setheading(6 * second)
    minHand.setheading(6 * minute)
    hurHand.setheading(30 * hour)

    tracer(False)
    printer.forward(65)
    printer.write(Week(t), align="center",
                  font=("Courier", 14, "bold"))
    printer.back(130)
    printer.write(Date(t), align="center",
                  font=("Courier", 14, "bold"))
    printer.home()
    tracer(True)

    ontimer(Tick, 100)  # 100ms后继续调用tick

def main():
    tracer(False)
    Init()
    SetupClock(160)
    tracer(True)
    Tick()
    mainloop()

if __name__ == "__main__":
    main()

使用turtle库绘制雪花图

import turtle as ttimport random as rd

def ground():
    tt.hideturtle()
    tt.speed(100)
    for i in range(400):
        tt.pensize(rd.randint(5, 10))
        x = rd.randint(-400, 350)
        y = rd.randint(-280, -1)
        r = -y / 280
        g = -y / 280
        b = -y / 280
        tt.pencolor((r, g, b))
        tt.penup()
        tt.goto(x, y)
        tt.pendown()
        tt.forward(rd.randint(40, 100))

def snow():
    tt.hideturtle()
    tt.pensize(2)
    tt.speed(100)
    for i in range(100):
        r = rd.random()
        g = rd.random