明天是20230520,有人说:5代表的是人生五味,酸甜苦辣咸;2指的是两个人的双向奔赴;0是零距离,因为懂得,所以灵魂相依。
上面进入正题,分享一波520专属Python代码。
玫瑰
毫无疑问,玫瑰始终都是是520、521...这类节日的专属。
参考代码:
import turtleturtle.speed(0)turtle.delay(10)turtle.penup()turtle.left(90)turtle.fd(200)turtle.pendown()turtle.right(90)turtle.fillcolor('red')turtle.begin_fill()turtle.circle(10, 180)turtle.circle(25, 110)# 花瓣turtle.left(150)turtle.circle(-90, 70)turtle.left(20)turtle.circle(75, 105)turtle.setheading(60)turtle.circle(80, 98)turtle.circle(-90, 40)# 文字turtle.color('red')turtle.pu()turtle.goto(-210,80)turtle.pd()turtle.write('520 Happy', move=False, align='center',font=("Times", 18, "bold"))turtle.pu()turtle.goto(210,80)turtle.pd()turtle.write('I LOVE YOU', move=False, align='center',font=("Times", 18, "bold"))turtle.pu()turtle.pu()turtle.hideturtle()turtle.done()
成果:
心连心
参考代码:
import turtle as tt.color('red','pink')t.begin_fill()t.width(5)t.left(135)t.fd(100)t.right(180)t.circle(50,-180)t.left(90)t.circle(50,-180)t.right(180)t.fd(100)t.pu()t.goto(50,-30)t.pd()t.right(90)t.fd(100)t.right(180)t.circle(50,-180)t.left(90)t.circle(50,-180)t.right(180)t.fd(100)t.end_fill()t.hideturtle()t.pu()t.goto(250,-70)t.pd()
成果:
动静爱心
参考代码:
import randomfrom tkinter import *from math import sin, cos, pi, logfor _ in range(520): x, y = random.choice(point_list) x, y = scatter_inside(x, y, 0.17) self._center_diffusion_points.add((x, y))heart_halo_point = set()for _ in range(halo_number): t = random.uniform(0, 2 * pi) x, y = heart(t, shrink_ratio=11.6) x, y = shrink(x, y, halo_radius) if (x, y) not in heart_halo_point: heart_halo_point.add((x, y)) x += random.randint(-14, 14) y += random.randint(-14, 14) size = random.choice((1, 2, 2)) all_points.append((x, y, size))for x, y in self._points: x, y = self.calc_position(x, y, ratio) size = random.randint(1, 3) all_points.append((x, y, size))for x, y in self._edge_diffusion_points: x, y = self.calc_position(x, y, ratio) size = random.randint(1, 2) all_points.append((x, y, size))self.all_points[generate_frame] = all_pointsfor x, y in self._center_diffusion_points: x, y = self.calc_position(x, y, ratio) size = random.randint(1, 2) all_points.append((x, y, size))self.all_points[generate_frame] = all_points
成果:
爱心biu
参考代码:
from turtle import *color('black')go_to(-228, 72)pensize(3)left(150)ring(350,1,0.8,'right')left(150)forward(70)left(90)forward(10)ring(200,0.1,0.9,'right')forward(10)left(90)forward(20)ring(200,0.1,0.9,'right')forward(10)left(90)ring(200,0.2,0.9,'right')left(100)leftforward(80)go_to(-228, 72)left(40)forward(40)ring(120,0.2,0.9,'left')go_to(-219,52)right(95)forward(80)right(85)ring(205,0.1,0.9,'left')forward(40)left(90)forward(10)ring(200,0.1,0.9,'right')forward(10)left(90)forward(40)ring(205,0.1,0.9,'left')right(92)forward(90)
成果:
爱心树
参考代码:
import turtle, random# 画爱心def love(x, y): lv = turtle.Turtle() lv.hideturtle() lv.up() # 定位 lv.goto(x, y) # 画圆弧 def curvemove(): for i in range(20): lv.right(10) lv.forward(2) lv.color('red', 'pink') lv.speed(10000000) lv.pensize(1) lv.down() lv.begin_fill() lv.left(140) lv.forward(22) curvemove() lv.left(120) curvemove() lv.forward(22) # 画完复位 lv.left(140) lv.end_fill()# 画树def tree(branchLen, t): # 残余树枝太少要完结递归 if branchLen > 5: # 如果树枝残余长度较短则变绿 if branchLen < 20: t.color("green") t.pensize(random.uniform((branchLen + 5) / 4 - 2, (branchLen + 6) / 4 + 5)) t.down() t.forward(branchLen) love(t.xcor(), t.ycor()) t.up() t.backward(branchLen) t.color("brown") return t.pensize(random.uniform((branchLen + 5) / 4 - 2, (branchLen + 6) / 4 + 5)) t.down() t.forward(branchLen) # 以下递归 ang = random.uniform(15, 45) t.right(ang) # 随机决定减小长度 tree(branchLen - random.uniform(12, 16), t) t.left(2 * ang) # 随机决定减小长度 tree(branchLen - random.uniform(12, 16), t) t.right(ang) t.up() t.backward(branchLen)
成果:
告白气球
参考代码:
from turtle import *from random import randrange, choice# 气球balloons = []# 色彩color_option = ["red", "blue", "green", "purple", "pink", "yellow", "orange"]# 气球大小size = 50# 气球线def line(x, y, a, b, line_width=1, color_name="black"): up() goto(x, y) down() color(color_name) width(line_width) goto(a, b)def distance(x, y, a, b): # 判断鼠标点击地位和气球坐标的间隔 return ((a - x) ** 2 + (b - y) ** 2) ** 0.5def tap(x, y): for i in range(len(balloons)): # 判断是否点击气球队列中的其中一个 if distance(x, y, balloons[i][0], balloons[i][1]) < (size / 2): # 删除气球 balloons.pop(i) return
成果:
告白墙
参考代码:
import cv2import numpy as npfrom PIL import Imagefrom wordcloud import WordCloudimg = cv2.imread('test.png')mask = np.zeros(img.shape[:2], np.uint8)size = (1, 65)bgd = np.zeros(size, np.float64)fgd = np.zeros(size, np.float64)rect = (1, 1, img.shape[1], img.shape[0])cv2.grabCut(img, mask, rect, bgd, fgd, 10, cv2.GC_INIT_WITH_RECT)mask2 = np.where((mask == 2) | (mask == 0), 1, 255)img = img.astype(np.int32)img *= mask2[:, :, np.newaxis]img[img>255] = 255img =img.astype(np.uint8)img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)img = Image.fromarray(img, 'RGB')img.save('test1.jpg')
成果:
好了,这个520就送你这些Python表白代码了,咱们下次再见♥。
源码在公众号Python小二后盾回复20230520支付