2025年Python图形设计

Python图形设计Python 图形设计 导言 图形设计真的很有意思 尤其使用 python 制作一些动态的图片 真的很棒啊 1 设计一条蟒蛇 import turtle turtle setup 650 350 0 0 turtle penup turtle fd 250 turtle pendown turtle

大家好,我是讯享网,很高兴认识大家。

Python图形设计
导言:图形设计真的很有意思,尤其使用python制作一些动态的图片,真的很棒啊!
1.设计一条蟒蛇。

import turtle turtle.setup(650, 350, 0, 0) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pensize(25) turtle.pencolor("purple") turtle.seth(-40) for i in range(4): turtle.circle(40, 80) turtle.circle(-40, 80) turtle.circle(40, 80 / 2) turtle.fd(40) turtle.circle(16, 180) turtle.fd(40 * 2 / 3) turtle.done() 

讯享网

2.设计一个进度条动画。

讯享网import time scale = 50 print("执行开始".center(scale // 2, "-")) # center()方法,将减号字符填充在执行开始或执行结束的两侧 start = time.perf_counter() # 确定开始的时间 for i in range(scale + 1): a = '*' * i # 已经经过的部分i b = '.' * (scale - i) # 未经过的部分 c = (i / scale) * 100 # 输出当时与进度条有关的百分比 dur = time.perf_counter() - start # 经过的时间i # \r是指在打印输出字符串之前,它能使光标退回到当前行的行首。 print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c, a, b, dur), end = '') # ^3.0f指输出前三位的整数,“.”后面是指你要保留多少位的小数点。 time.sleep(0.1) # 刷新时间 print("\n" + "执行结束".center(scale // 2, '-')) 

3.显示当前日期。

import turtle import time def drawGap(): # 增加七段数码管之间的线条间隔 turtle.penup() turtle.fd(5) def drawLine(draw): # penup() 抬起画笔 # pendown() 放下画笔 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 drawDate(date): # 获得要输出的数字 turtle.pencolor("red") for i in date: if i == '-': turtle.write('年', font = ("Arial", 40, "normal")) turtle.pencolor("green") turtle.fd(40) elif i == '=': turtle.write('月', font = ("Arial", 40, "normal")) elif i == '+': turtle.write('日', font = ("Arial", 40, "normal")) else: drawDigit(eval(i)) # 通过eval()函数将数字变为整数 def main(): turtle.setup(800, 350, 200, 200) turtle.penup() turtle.fd(-300) # 向左侧 移动300 但是不画 turtle.pensize(5) # 设置线条的粗细 drawDate(time.strftime('%Y-%m=%d+', time.gmtime())) # 函数接收以时间元组, # 并返回以可读字符串表示的当地时间,格式由参数 format 决定。 turtle.hideturtle() # 隐藏画笔的turtle形状 turtle.done() # 用来停止画笔绘制,但绘图窗体不会关闭 main() 

4.用python对汉诺塔问题求解。


讯享网

讯享网def move(n, a, b, c): # n为圆盘数,a代表初始位圆柱,b代表过渡位圆柱,c代表目标位圆柱 if n == 1: # 如果当前初始位只剩下一个盘子,则移动到目标位 print(a, '---->', c) else: move(n - 1, a, c, b) # 将初始的n-1个圆盘通过c圆盘 过渡到b圆盘 print(a, '---->', c) # 把a上剩余的一个移到c move(n - 1, b, a, c) # 之后再把b上的n-1个圆盘通过a移动到c move(3, 'A', 'B', 'C') 

5.绘制5阶(或5阶以上某个值)科勒曲线,从一条直线开始。

import turtle def koch(size, n): if n == 0: turtle.fd(size) else: for angle in [0, 60, -120, 60]: turtle.left(angle) koch(size / 3, n - 1) def main(): turtle.setup(800, 400) turtle.penup() turtle.goto(-600, 100) turtle.pendown() turtle.pensize(2) level = 5 # 阶数 koch(500, level) turtle.right(120) turtle.hideturtle() turtle.done() main() 

6.绘制5阶(或5阶以上某个值)科勒曲线,从倒置的三角形开始。

讯享网import turtle def koch(size, n): if n == 0: turtle.fd(size) else: for angle in [0, 60, -120, 60]: turtle.left(angle) koch(size / 3, n - 1) def main(): turtle.setup(800, 400) turtle.penup() turtle.goto(-600, 100) turtle.pendown() turtle.pensize(2) level = 5 # 阶数 koch(500, level) turtle.right(120) koch(500, level) turtle.right(120) koch(500, level) turtle.hideturtle() turtle.done() main() 

7.自定义栈,实现基本的入栈、出栈操作。

class Stack(object): # 初始化栈为空 def __init__(self): self.items = [] # 判断栈 是否为空,返回布尔值 def is_empty(self): return self.items == [] # 返回栈顶元素 def get_top(self): return self.items[len(self.items) - 1] # 返回栈的大小 def size(self): return len(self.items) # 把元素压入栈中 def push(self, item): self.items.append(item) # 把栈顶元素弹出 def pop(self): return self.items.pop() def main(): my_stack = Stack() my_stack.push('s') # 把h压入栈中 my_stack.push('j') my_stack.push('j') print("栈里现在的元素有:", end = ' ') for i in range(my_stack.size()): print(my_stack.items[i], end = ' ' if i != my_stack.size() - 1 else '\n') print("目前栈里的元素有{}个".format(my_stack.size())) # 看目前栈里有多少元素 # 下面看pop函数 print("栈顶的元素为: " + my_stack.get_top()) my_stack.pop() print("现在的栈顶元素为: " + my_stack.get_top()) # 判断栈是否为空 if my_stack.is_empty() == 0: print("栈不为空") print("将 s 弹出") my_stack.pop() if my_stack.is_empty() == 1: print("现在栈已空") main() 

8.自定义队列结构,实现入队、出队操作。

讯享网class Queue(object): # 初始化栈为空 def __init__(self): self.items = [] # 判断队列 是否为空,返回布尔值 def is_empty(self): return self.items == [] # 返回队列的大小 def size(self): return len(self.items) # 把元素从队尾压入 def enqueue(self, item): self.items.append(item) # 把队首元素弹出 def dequeue(self): return self.items.pop(0) def main(): my_queue = Queue() my_queue.enqueue('h') # 将h 从队尾压入队列 my_queue.enqueue('a') print("队列里现在的元素有:", end = ' ') for i in range(my_queue.size()): print(my_queue.items[i], end = ' ' if i != my_queue.size() - 1 else '\n') print("目前队列里的元素有{}个".format(my_queue.size())) # 看目前队列里有多少元素 # 下面看pop函数 print("弹出的元素为: " + my_queue.dequeue()) print("队列现在有{}个元素".format(my_queue.size())) print("现在的队列顶元素为: {}".format(my_queue.items[0])) # 判断栈是否为空 if my_queue.is_empty() == 0: print("队列不为空") print("将{}弹出".format(my_queue.items[0])) my_queue.dequeue() if my_queue.is_empty() == 1: print("现在队列已空") main() 
  1. 设计一个花朵。
import turtle def draw_diamond(turt): for i in range(1,3): turt.forward(100) turt.right(45) turt.forward(100) turt.right(135) def draw_art(): window = turtle.Screen() #视窗 window.bgcolor("black") #背景颜色 brad = turtle.Turtle() #创建一个“乌龟”对象 brad.shape("turtle") #设定画笔图像是乌龟 brad.color("red") #设定画笔颜色是红色 brad.speed("fast") #画画速度是快 for i in range(1, 37): #调用diamond函数36次,即画36个花瓣 draw_diamond(brad) brad.right(10) brad.right(90) #画出枝干 brad.forward(1000) window.exitonclick() draw_art() 
小讯
上一篇 2025-03-14 17:51
下一篇 2025-02-08 12:13

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/68295.html