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

2022-12-29 12:27:35 浏览数 (1)

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

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

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

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

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

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

  剧中代码赏析

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

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

   import turtle as t

代码语言:javascript复制
    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):

代码语言:javascript复制
        for x in range(-8, 9):
            print('*##*'[(x 10)%4] if (x*x y*y-25)**3 < 25*x*x*y*y*y else '-', end=' ')

  ​​​​​​效果:

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

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

代码语言:javascript复制
        for x in range(-8, 9):
            print('1' if (x*x y*y-25)**3 < 25*x*x*y*y*y else ' ', end=' ')

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

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

  代码有两个片段:

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

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

  改写成 Python 代码:

   size = 10

代码语言:javascript复制
    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('V', end=' ')
            else:
                print(' ', end=' ')
        print()
    for x in range(1, 2*size):
        for y in range(x):
            print(' ', end=' ')
        for y in range(4*size 1-2*x):
            print('V', end=' ')

  运行效果:

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

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

代码语言:javascript复制
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/                
        本文共 694 个字数,平均阅读时长 ≈ 2分钟

0 人点赞