用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - python代码库

尺子

2022-01-21 作者: 张书娥举报

[python]代码库

import matplotlib.pyplot as plt
import matplotlib.patches as mpathes
from matplotlib.lines import Line2D

marks = []  # 刻度线,每个元素是一个二元组:(刻度线位置, 刻度线高度)
def ruler(l, r, h):
    '''
    画出直尺上的刻度线
    :param l: 直尺左端的刻度值
    :param r: 直尺右端的刻度值
    :param h: 位于l和r中间刻度线的高度
    '''
    m = (l + r) // 2
    if h > 0:
        ruler(l, m, h - 1)
        mark(m, h)
        ruler(m, r, h - 1)

def mark(m, h):
    '''
    标记刻度线
    :param m: 刻度线位置
    :param h: 刻度线高度
    '''
    marks.append((m, h))

def show():
    ''' 将直尺图形化 '''
    fig, ax = plt.subplots()
    rect = mpathes.Rectangle([0, 0], 8, 1, fill=False) # 绘制一个矩形作为直尺
    ax.add_patch(rect)
    # 绘制刻度线
    for m, h in marks:
        ax.add_line(Line2D((m, m), (0, h * 0.2), linewidth=1))
    plt.axis('equal')
    plt.axis('off')
    plt.show()

if __name__ == '__main__':
    ruler(0, 8, 3) # 直尺长度是8,最高刻度是3
    print(marks)
    for _, h in marks: # 在控制台展示直尺
        print('-' * h)
    show()


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...