我的128天创作纪念日

目录

Pocker_Spades_A的128天创作纪念日

Pocker_Spades_A的个人主页

机缘

收获

日常

成就

憧憬


Pocker_Spades_A的128天创作纪念日

欢迎认识,我是扑克中的黑桃A

Pocker_Spades_A的个人主页


机缘

高考结束后的那个漫长暑假,我偶然接触到了 Python 编程语言。当时只是出于好奇,想探索一下这门热门语言的魅力,没想到就此开启了一段充满挑战与惊喜的学习之旅。没有老师的指导,我只能在网上四处搜罗教程,从基础语法学起,一点点啃下那些复杂的概念。

自学的过程并不轻松,遇到难题时常常感到无助。但我没有放弃,凭借着一股不服输的劲头,不断尝试,逐渐掌握了一些基础技能。

上了大一,一次和朋友聊起自学 Python 的经历,他向我推荐了 CSDN 这个平台。他说上面不仅有海量的优质编程学习资源,还能让我把自己的学习心得分享出来。起初,我心里满是怀疑,觉得自己不过是个刚入门的小白,能分享的内容实在有限。但朋友鼓励我,说记录学习过程既能梳理自己的思路,也能通过交流获得更多进步的机会。

在朋友的再三劝说下,我怀着忐忑的心情注册了账号,开始在 CSDN 上记录自己学习 Python 的点点滴滴。没想到,这一尝试,竟开启了我一段充满惊喜与成长的旅程。


收获

这 128 天的创作,是一场充满惊喜的旅程。粉丝数量逐步增长,目前已有1663位朋友关注,他们的每一次关注,都让我深感责任重大。文章总阅读量已经到了93239人次,让我备受鼓舞。

文章累计收获 2478个赞、1213条评论和1924的收藏量。评论区里,既有新手的感谢,也有同行的建议。一次,一位读者反馈我文章中代码在特定环境下的兼容性问题,让我意识到代码鲁棒性的重要性,也让我学会从不同角度优化代码。

我还结识了许多优秀的开发者。如身为阿里云开发者社区专家博主,华为云享专家 ,腾讯云创作之星,支付宝开发者社区优秀季度创作博主,支付宝社区问答官的优秀博主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()

通过这个项目,我深入理解了面向对象编程的思想,学会了如何将复杂的问题分解成一个个小的类和方法去解决,为后续学习更复杂的编程项目打下了坚实的基础。


憧憬

在学业规划上,我希望能在 Python 编程领域深入学习,参加更多的编程竞赛,提升自己的实践能力。争取在大二大三的时候,能够参与一些开源项目,积累更多的项目经验。

相关推荐
钢铁男儿1 小时前
Python 字典(一个简单的字典)
开发语言·python
游王子1 小时前
Python Pandas(7):Pandas 数据清洗
开发语言·python·pandas
Jackson@ML2 小时前
Django开发入门 – 2.Django的Web应用项目架构
python·django·virtualenv
dkgee2 小时前
conda将python低版本环境升级到高版本
开发语言·python·conda
A&long@20203 小时前
【AI时代】-开发环境准备 之 Conda 创建 Python 环境 (含pip常用命令、jupyter 安装及汉化、自定义文档位置等配置)
人工智能·python·conda
Pandaconda3 小时前
【新人系列】Python 入门(三十):工作常用第三方库 - 上
开发语言·经验分享·笔记·后端·python·面试·第三方库
编织幻境的妖4 小时前
python2048游戏
开发语言·python·游戏
西猫雷婶5 小时前
python学opencv|读取图像(六十一)先后使用cv2.dilate()函数和cv2.erode()函数实现图像处理
python·opencv·学习
程序员三藏5 小时前
Postman接口测试:全局变量/接口关联/加密/解密
自动化测试·软件测试·python·测试工具·职场和发展·接口测试·postman
老黄浅谈质量5 小时前
PyCharm结合DeepSeek-R1
ide·python·ai·pycharm·deepseek