【Python入门】——函数和Pyinstaller打包程序

一.函数


#定义一个参数
def function(n[,m]):
    <main>
    return ret
#例如
def fact(n, *b):
    s = 1
    for i in range(1,n+1):
        s *= i
    for item in b:
        s *= item
    return s,n  #返回一个元组(435456000,10)
print(fact(10,3,5,8)) #(10!*3*5*8 = 435456000,10)  
#lambda函数
#形式:<funcame> = lambda <var>:<main>
#例如
f = lambda x,y : x+y #定义一个函数:函数名为f 有两个参数x,y  运算时x+y
f(10,15) = 25

实例:七段数码管

#七段数码管绘制
import turtle
import time
def drawGap():
    turtle.penup()
    turtle.fd(5)
def drawLine(draw): #绘制单段数码管
    drawGap()
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    drawGap()
    turtle.right(90)
def drawDigit(digit): #根据数字绘制七段数码管
    drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,6,8] else drawLine(False)
    turtle.left(90)
    drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
    drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
    drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
    turtle.left(180)
    turtle.penup()#为后续数字确定位置
    turtle.fd(20)
def DrawData(date): #获得要输出的数字
    turtle.pencolor("red")
    for i in date:
        if i == '-':
            turtle.write("年",font=("Arial",18,"normal"))
            turtle.pencolor("green")
            turtle.fd(40)
        elif i == '=':
            turtle.write("月",font=("Arial",18,"normal"))
            turtle.pencolor("blue")
            turtle.fd(40)
        elif i == '+':
            turtle.write("日",font=("Arial",18,"normal"))
        else:
            drawDigit(eval(i)) #通过eval()函数进行数字转化
def main():
    turtle.setup(800,350,200,200) #初始化画布
    turtle.penup()
    turtle.pensize(5)
    turtle.fd(-300)
    DrawData(time.strftime('%Y-%m=%d+',time.gmtime()))#获取系统时间
    turtle.hideturtle() #隐藏海龟
    turtle.done()
main()
# 递归计算n!
def fact(n):
    if n == 0:
    	return 1
    return n*fact(n-1)
print(fact(5))

#字符串反转
def rvs(s):
    if s == "":
        return s
    return rvs(s[1:]) + s[0]
print(rvs("1234567"))


#汉诺塔
count = 0
def hanoi(n,src,dst,mid):
    global count
    if n == 1:
        print("{}:{}->{}".format(1,src,dst))
        count += 1
    else:
        hanoi(n-1,src,mid,dst)
        print("{}:{}->{}".format(1,src,dst))
        count += 1
        hanoi(n-1,mid,dst,src)
hanoi(3,"A","B","C")
print(count)

实例:科赫雪花

#实例:科赫雪花
import turtle
#绘制大小为size 的n阶Koch曲线
def Koch(size,n):
    if n == 0:
        turtle.fd(size)
    else:
        for angle in [0,60,-120,60]: #__/\__ 绘制Koch曲线
            turtle.left(angle)
            Koch(size/3,n-1)
def main():
    turtle.setup(600,600)
    turtle.penup()
    turtle.goto(-200,100)
    turtle.pendown()
    turtle.pensize(2)
    level = 3
    Koch(400,level) #3阶科赫曲线
    turtle.right(120)
    Koch(400,level) #3阶科赫曲线
    turtle.right(120)
    Koch(400,level) #3阶科赫曲线
    turtle.hideturtle()
    turtle.done()
main()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ikEKVd1-1580743356528)(C:\Users\15428\AppData\Roaming\Typora\typora-user-images\image-20200203224052361.png)]

二.PyInstaller库的使用


将Python源代码 转化为可执行文件 无需在计算机上安装Python环境

安装

打开Window OS 下的CMD命令或相应系统的命令行 输入:

pip intall pyinstaller

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EsVkugct-1580743356532)(C:\Users\15428\AppData\Roaming\Typora\typora-user-images\image-20200203215929060.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9PQckjw-1580743356533)(C:\Users\15428\AppData\Roaming\Typora\typora-user-images\image-20200203221440906.png)]

可能会出现异常 更新pip
在这里插入图片描述

安装完成后,依然使用CMD命令:

pyinstaller -F <文件名.py>

默认文件路径是在C盘的登录用户的根目录下 文件路径大家可以自行修改

然后找到用户目录里有一个dist文件夹

里面就有可以转化后的可执行文件了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9jbw6m2N-1580743356537)(C:\Users\15428\AppData\Roaming\Typora\typora-user-images\image-20200203222159417.png)]

一些pyinstaller常见命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S1rDNTLk-1580743356538)(C:\Users\15428\AppData\Roaming\Typora\typora-user-images\image-20200203222358167.png)]

发布了141 篇原创文章 · 获赞 71 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/sinat_40872274/article/details/104163559