![](https://i-blog.csdnimg.cn/direct/579a9265b717460292901b72127018fb.gif)
目录
Pocker_Spades_A的128天创作纪念日
![](https://i-blog.csdnimg.cn/direct/4e1517c2794d41cc9af2025e98412fbe.png)
欢迎认识,我是扑克中的黑桃A
Pocker_Spades_A的个人主页
机缘
高考结束后的那个漫长暑假,我偶然接触到了 Python 编程语言。当时只是出于好奇,想探索一下这门热门语言的魅力,没想到就此开启了一段充满挑战与惊喜的学习之旅。没有老师的指导,我只能在网上四处搜罗教程,从基础语法学起,一点点啃下那些复杂的概念。
自学的过程并不轻松,遇到难题时常常感到无助。但我没有放弃,凭借着一股不服输的劲头,不断尝试,逐渐掌握了一些基础技能。
上了大一,一次和朋友聊起自学 Python 的经历,他向我推荐了 CSDN 这个平台。他说上面不仅有海量的优质编程学习资源,还能让我把自己的学习心得分享出来。起初,我心里满是怀疑,觉得自己不过是个刚入门的小白,能分享的内容实在有限。但朋友鼓励我,说记录学习过程既能梳理自己的思路,也能通过交流获得更多进步的机会。
在朋友的再三劝说下,我怀着忐忑的心情注册了账号,开始在 CSDN 上记录自己学习 Python 的点点滴滴。没想到,这一尝试,竟开启了我一段充满惊喜与成长的旅程。
收获
这 128 天的创作,是一场充满惊喜的旅程。粉丝数量逐步增长,目前已有1663位朋友关注,他们的每一次关注,都让我深感责任重大。文章总阅读量已经到了93239人次,让我备受鼓舞。
![](https://i-blog.csdnimg.cn/direct/4716660d26a94c70a52447de9f8cefb0.png)
文章累计收获 2478个赞、1213条评论和1924的收藏量。评论区里,既有新手的感谢,也有同行的建议。一次,一位读者反馈我文章中代码在特定环境下的兼容性问题,让我意识到代码鲁棒性的重要性,也让我学会从不同角度优化代码。
![](https://i-blog.csdnimg.cn/direct/6f35974c4186482996919253b6c6f787.png)
我还结识了许多优秀的开发者。如身为阿里云开发者社区专家博主,华为云享专家 ,腾讯云创作之星,支付宝开发者社区优秀季度创作博主,支付宝社区问答官的优秀博主Undoom,年近50岁的程序员前辈初九之潜龙勿用,现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试的大佬I'mAlex等等,他们热心指导,极大地拓宽了我的技术视野。
日常
创作已经成为我大学生活的一部分。每天课余时间,我会先回顾当天学到的 Python 知识,思考哪些可以作为创作素材。有时候灵感一来,课间休息时我也会在笔记本上记录下思路。
晚上完成作业后,我就会花一到两个小时坐在电脑前,整理素材、编写代码、撰写文章。周末我会留出更多时间,深入学习一些新的 Python 库和框架,为创作积累更多内容。
虽然要平衡创作和其他课程的学习并不容易,但我会制定详细的学习计划,合理分配时间。比如,周一到周五集中精力完成课程学习,周末安排特定时段用于创作和深度学习,确保两者都不落下。
成就
在众多代码中,我最满意的是用 Python 打印的一个跳动的爱心(李洵同款)。
python
import random
from math import sin, cos, pi,log
from tkinter import *
CANVAS_WIDTH = 640
CANVAS_HEIGHT = 640
CANVAS_CENTER_X = CANVAS_WIDTH / 2
CANVAS_CENTER_Y = CANVAS_HEIGHT / 2
IMAGE_ENLARGE = 11
HEART_COLOR ="#Fd798f"
def heart_function(t,shrink_ratio:float = IMAGE_ENLARGE):
x = 16*(sin(t)**3)
y = -(15*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(3*t))
x*=shrink_ratio
y*=shrink_ratio
x+=CANVAS_CENTER_X
y+=CANVAS_CENTER_Y
return int(x),int(y)
def scatter_inside(x,y,beta=0.15):
ratio_x=-beta*log(random.random())
ratio_y=-beta*log(random.random())
dx=ratio_x*(x-CANVAS_CENTER_X)
dy=ratio_y*(y-CANVAS_CENTER_Y)
return x-dx,y-dy
def shrink(x,y,ratio):
force=-1/(((x-CANVAS_CENTER_X)**2+(y-CANVAS_CENTER_Y)**2)**0.6)
dx=ratio*force*(x-CANVAS_CENTER_X)
dy=ratio*force*(y-CANVAS_CENTER_Y)
return x-dx,y-dy
def curve(p):
return 2*(2*sin(4*p))/(2*pi)
class Heart:
def __init__(self,generate_frame=20):
self._points=set()
self._edge_diffusion_points=set()
self._center_diffusion_points=set()
self.all_points={}
self.build(2000)
self.random_halo=1000
self.generate_frame=generate_frame
for frame in range(generate_frame):
self.calc(frame)
def build(self,number):
for _ in range(number):
t=random.uniform(0,2*pi)
x,y=heart_function(t)
self._points.add((x,y))
for _x, _y in list(self._points):
for _ in range(3):
x,y=scatter_inside(_x,_y,0.3)
self._edge_diffusion_points.add((x,y))
point_list=list(self._points)
for _ in range(4000):
x,y=random.choice(point_list)
x,y=scatter_inside(x,y,0.2)
self._center_diffusion_points.add((x,y))
@staticmethod
def calc_position(x,y,ratio):
force=1/(((x-CANVAS_CENTER_X)**2+(y-CANVAS_CENTER_Y)**2)**0.520)
dx=ratio*force*(x-CANVAS_CENTER_X)+random.randint(-2,2)
dy=ratio*force*(y-CANVAS_CENTER_Y)+random.randint(-2,2)
return x-dx,y-dy
def calc(self,generate_frame):
ratio=15*curve(generate_frame/15*pi)
halo_radius=int(4+6*(1+curve(generate_frame/15*pi)))
halo_number=int(3000+4000*abs(curve(generate_frame/15*pi)**2))
all_points=[]
heart_halo_point=set()
for _ in range(halo_number):
t=random.uniform(0,2*pi)
x,y=heart_function(t,shrink_ratio=11.5)
x,y=shrink(x,y,halo_radius)
if (x,y) not in heart_halo_point:
heart_halo_point.add((x,y))
x+=random.randint(-16,16)
y+=random.randint(-16,16)
size=random.choice((2,2,1))
all_points.append((x,y,size))
for x,y in self._points:
x,y=self.calc_position(x,y,ratio)
size=random.randint(1,2)
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_point[generate_frame]=all_points
for 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
def render(self,render_canvas,render_frame):
for x,y,size in self.all_points[render_frame % self.generate_frame]:
render_canvas.create_rectangle(x,y,x+size,y+size,width=0,fill=HEART_COLOR)
def draw(main: Tk,render_canvas: Canvas,render_heart: Heart,render_frame=0):
render_canvas.delete('all')
render_heart.render(render_canvas,render_frame)
main.after(160,draw,main,render_canvas,render_heart,render_frame+1)
if __name__=='__main__':
root=Tk()
root.title("")
canvas=Canvas(root,bg="black",height=CANVAS_HEIGHT,width=CANVAS_WIDTH)
canvas.pack()
heart = Heart()
draw(root,canvas,heart)
root.mainloop()
![](https://i-blog.csdnimg.cn/direct/4e5084e81b074de2ad7313a1c29645a5.gif)
通过这个项目,我深入理解了面向对象编程的思想,学会了如何将复杂的问题分解成一个个小的类和方法去解决,为后续学习更复杂的编程项目打下了坚实的基础。
憧憬
在学业规划上,我希望能在 Python 编程领域深入学习,参加更多的编程竞赛,提升自己的实践能力。争取在大二大三的时候,能够参与一些开源项目,积累更多的项目经验。