排行榜 统计
  • 文章总数:649 篇
  • 评论总数:10704 条
  • 分类总数:4 个
  • 最后更新:4月4日
none

电视剧里的代码真能运行吗?

本文阅读 4 分钟
首页 正文
本文最后更新于2022年12月06日,已超过880天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

您阅读这篇文章共耗时:

  大家好,欢迎来到 的编程教室 !

  前几天,后台老有小伙伴留言“爱心代码”。这不是很早之前发过的内容嘛,怎么最近突然又被人翻出来了?后来才知道,原来是一部有关程序员的青春偶像剧《点燃我,温暖你》在热播,而剧中有一段关于期中考试要用程序画一个爱心的桥段。

  于是出于好奇,就去看了这一集(第5集,不用谢)。这一看不要紧,差点把刚吃的鸡腿给喷出来--槽点实在太多了!

  忍不住做了个欢乐吐槽向的代码解读视频,在某平台上被顶到了20个w的浏览,也算蹭了一波人家电视剧的热度吧……

  看剧学编程:你用程序画爱心是认真的吗?

  下面是图文版,给大家分析下剧中出现的“爱心”代码,并且来复刻一下最后男主完成的酷炫跳动爱心。

  剧中代码赏析

  1. 首先是路人同学的代码:

  虽然剧中说是“C语言期中考试”,但这位同学的代码名叫 draw2.py,一个典型的 Python 文件,再结合截图中的 pen.、pen.setpos 等方法来看,应该是用 turtle 海龟作图库来画爱心。那效果通常是这样的:

   import turtle as t

    t.color('red')
    t.setheading(50)
    t.begin_fill()
    t.circle(-100, 170)
    t.circle(-300, 40)
    t.right(38)
    t.circle(-300, 40)
    t.circle(-100, 170)
    t.end_fill()


  而不是剧中那个命令行下用1组成的不规则的图形。

  2. 然后是课代表向路人同学展示的优秀代码:

  及所谓的效果:

  这确实是C语言代码了,但文件依然是以 .py 为后缀,并且 前面没有加上#,这显然是没法运行的。

  里面的内容是可以画出爱心的,用是这个爱心曲线公式:

  然后遍历一个1517的方阵,计算每个坐标是在曲线内还是曲线外,在内部就输出#或,外部就是-

  用python改写一下是这样的:

   for y in range(9, -6, -1):

        for x in range(-8, 9):
            print(&#39;*##*&#39;[(x+10)%4] if (x*x+y*y-25)**3 < 25*x*x*y*y*y else &#39;-&#39;, end=&#39; &#39;)

  ​​​​​​效果:

  稍微改一下输出,还能做出前面那个全是1的效果:

   for y in range(9, -6, -1):

        for x in range(-8, 9):
            print(&#39;1&#39; if (x*x+y*y-25)**3 < 25*x*x*y*y*y else &#39; &#39;, end=&#39; &#39;)


  但跟剧中所谓的效果相去甚远。

  3. 最后是主角狂拽酷炫D炸天的跳动爱心:

  代码有两个片段:

  但这两个片段也不C语言,而是C++,且两段并不是同一个程序,用的方法也完全不一样。

  第一段代码跟前面一种思路差不多,只不过没有直接用一条曲线,而是上半部用两个圆形,下半部用两条直线,围出一个爱心。

  改写成 Python 代码:

   size = 10

    for x in range(size):
        for y in range(4*size+1):
            dist1 = ((x-size)**2 + (y-size)**2) ** 0.5
            dist2 = ((x-size)**2 + (y-3*size)**2) ** 0.5
            if dist1 < size + 0.5 or dist2 < size + 0.5:
                print(&#39;V&#39;, end=&#39; &#39;)
            else:
                print(&#39; &#39;, end=&#39; &#39;)
        print()
    for x in range(1, 2*size):
        for y in range(x):
            print(&#39; &#39;, end=&#39; &#39;)
        for y in range(4*size+1-2*x):
            print(&#39;V&#39;, end=&#39; &#39;)

  运行效果:

  第二段代码用的是基于极坐标的爱心曲线,是遍历角度来计算点的位置。公式是:

  计算出不同角度对应的点坐标,然后把它们连起来,就是一个爱心。

from math import pi, sin, cos import matplotlib.pyplot as plt no_pieces = 100 dt = 2*pi/no_pieces t = 0 vx = [] vy = [] while t [1]: https://xuan.ddwoo.top/index.php/archives/424/  
本文来自投稿,不代表本站立场,如若转载,请注明出处:http://xuan.ddwoo.top/index.php/archives/435/
-- 展开阅读全文 --
c语言程序设计实例-经典C语言程序设计100例
« 上一篇 12-06
长期稳定的项目—steam搬砖
下一篇 » 12-06
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

发表评论

本站已加入互联网信息服务许可,请规范您的言行哦~

成为第一个评论的人

作者信息

热门文章

珍惜时间哦~

今日一言

- -
加载中...
换一句

标签TAG

热评文章