python数据结构学习(递归----绘制标尺)

话不多说,直接上代码

"""
1.绘制刻度线个数
2.绘制刻度线是否有数字标识
"""
def draw_line(length,lable=''):   #tick_lable要赋值,否则会出现参数上传错误
    #两种情况,是否带标签
    if lable:  #判断是否存在标签
        line='_'*length+' '+lable
    else:
        line = '_' * length
    print(line)
def draw_interval(length):
    if length>0: #判断是否存在刻度线
        # 一段距离内的刻度线上下关于中心对称
        draw_interval(length-1)
        draw_line(length)
        draw_interval(length-1)
def draw_ruler(num,length): #num为标尺的长度,length为刻度线最大数量
    draw_line(length,'0') #起点0由于特殊无法遍历,因此优先绘制出
    #绘制刻度值
    for i in range(1,1+num):    #range()包头不包尾
        #draw_interval放在循环里是因为要对每两个数字刻度间都进行绘制
        draw_interval(length - 1)  # 除取带数字的刻度,其余最大的比刻度少1
        draw_line(length,str(i)) #i必须为字符串格式
def def_num():
    x, y =input("please input num_inches and major_length,split use ' '").split()  # x,y此时都是str类型,输入时用空格隔开
    x=int(x) #将str类型的x,y转换为整型
    y=int(y)
    draw_ruler(x,y)
if __name__ == '__main__':
    def_num()
输入(3 4)运行结果如图
please input num_inches and major_length,split use ' '3 4
____ 0
_
__
_
___
_
__
_
____ 1
_
__
_
___
_
__
_
____ 2
_
__
_
___
_
__
_
____ 3
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值