2401_84195637 2024-05-08 22:22 采纳率: 100%
浏览 15
已结题

从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。

谁能帮帮我 我不会做这个 举一反三好难 跟书上例题不一样 这个要画A到H 谢谢大家

img

  • 写回答

14条回答 默认 最新

  • micthis 2024-05-09 03:08
    关注

    这个咋样?可以的话评论给代码

    img

    追加代码:

    import turtle as t
    
    #画线
    def drawLine(draw,linesize,gap):
        #画空
        t.penup()
        t.fd(gap)
        #画数码管
        t.pendown() if draw else t.penup()
        t.fd(linesize)
        #画空
        t.penup()
        t.fd(gap)
        t.right(90)
    
    #画字符
    def drawChar(c,linesize,gap):
        sep=20
        drawLine(True,linesize,gap) if c in 'ABDEFGH' else drawLine(False,linesize,gap)
        drawLine(True,linesize,gap) if c in 'ABDGH' else drawLine(False,linesize,gap)
        drawLine(True,linesize,gap) if c in 'BCDEG' else drawLine(False,linesize,gap)
        drawLine(True,linesize,gap) if c in 'ABCDEFGH' else drawLine(False,linesize,gap)
        t.left(90)
        drawLine(True,linesize,gap) if c in 'ABCEFGH' else drawLine(False,linesize,gap)
        drawLine(True,linesize,gap) if c in 'ACEFG' else drawLine(False,linesize,gap)
        drawLine(True,linesize,gap) if c in 'ADH' else drawLine(False,linesize,gap)
        t.left(180)
        t.penup()
        t.fd(sep)
        #下一个字符的x坐标相对于当前字符的x坐标的偏移量
        return linesize+2*gap+sep
    
    def main():
        colors=['black','magenta','green','blue','yellow','red','pink']
        width,height=1000,700
        linesize,gap=30,6
        x,y=-width//2+linesize+3*gap,height//2-(linesize+3*gap)
    
        s=input('请输入字符串:').upper()
        lens=len(s)
        t.setup(width,height,0,0)
        t.speed(0)
        t.penup()
        t.goto(x,y)
        t.pensize(5)
        for i in range(lens):
            t.pencolor(colors[i%7])
            x+=drawChar(s[i],linesize,gap)
            if x>=width//2-(linesize+3*gap):
                x,y=-width//2+linesize+3*gap,y-int(2.5*linesize)-3*gap
                t.penup()
                #移动到下一个字符的位置
                t.goto(x,y)
        t.hideturtle()
    if __name__=='__main__':
        main()
    

    你要的bd大写的:

    img

    代码:

    import turtle as t
    import math
    
    #画B和D
    def drawBD(c,linesize,gap,sep):
        size=linesize+2*gap
        if c=='B':
            t.left(90)
            t.penup()
            t.fd(gap)
            t.pendown()
            t.fd(linesize)
            t.penup()
            t.fd(gap)
    
            t.right(90)
            t.fd(gap)
            t.pendown()
            t.fd(linesize//2)
            t.penup()
            t.fd(gap)
    
            t.right(math.degrees(math.asin(2/5**0.5)))
            t.fd(gap)
            t.pendown()
            t.fd((5**0.5*size)/2-2*gap)
            t.penup()
            t.fd(gap)
    
            t.right(math.degrees(math.asin(1/5**0.5))*2)
            t.fd(gap)
            t.pendown()
            t.fd((5**0.5*size)/2-2*gap)
            t.penup()
            t.fd(gap)
    
            t.right(math.degrees(math.asin(2/5**0.5)))
            t.fd(gap)
            t.pendown()
            t.fd(linesize//2)
            t.penup()
            t.fd(gap)
    
            t.right(90)
            t.fd(gap)
            t.pendown()
            t.fd(linesize)
            t.penup()
            t.fd(gap)
    
            t.right(90)
            t.fd(gap)
            t.pendown()
            t.fd(linesize)
            t.penup()
            t.fd(gap)
    
            t.fd(sep)
        elif c=='D':
            t.left(90)
            t.pendown()
            t.fd(gap+linesize)
            t.penup()
            t.fd(gap)
    
            t.right(90+math.degrees(math.asin(1/5**0.5)))
            t.fd(gap)
            t.pendown()
            t.fd(0.5*size*5**0.5-2*gap)
            t.penup()
            t.fd(gap)
    
            t.right(math.degrees(math.asin(2/5**0.5)))
            t.fd(gap)
            t.pendown()
            t.fd(linesize)
            t.penup()
            t.fd(gap)
            
            t.right(math.degrees(math.asin(2/5**0.5)))
            t.fd(gap)
            t.pendown()
            t.fd(0.5*size*5**0.5-2*gap)
            t.penup()
            t.fd(gap)
    
            t.right(90+math.degrees(math.asin(1/5**0.5)))
            t.fd(gap)
            t.pendown()
            t.fd(gap+linesize)
            
            t.right(90)
            t.penup()
            t.fd(linesize+2*gap+sep)
    
    #画线
    def drawLine(draw,linesize,gap):
        #画空
        t.penup()
        t.fd(gap)
        
        #画数码管
        t.pendown() if draw else t.penup()
        t.fd(linesize)
        
        #画空
        t.penup()
        t.fd(gap)
        
        t.right(90)
    
    #画字符
    def drawChar(c,linesize,gap):
        sep=20
        
        if c in 'BD':
            drawBD(c,linesize,gap,sep)
            return linesize+2*gap+sep
        
        drawLine(True,linesize,gap) if c in 'AEFGH' else drawLine(False,linesize,gap)
        drawLine(True,linesize,gap) if c in 'AGH' else drawLine(False,linesize,gap)
        drawLine(True,linesize,gap) if c in 'CEG' else drawLine(False,linesize,gap)
        drawLine(True,linesize,gap) if c in 'ACEFGH' else drawLine(False,linesize,gap)
        t.left(90)
        drawLine(True,linesize,gap) if c in 'ACEFGH' else drawLine(False,linesize,gap)
        drawLine(True,linesize,gap) if c in 'ACEFG' else drawLine(False,linesize,gap)
        drawLine(True,linesize,gap) if c in 'AH' else drawLine(False,linesize,gap)
        t.left(180)
        t.penup()
        t.fd(sep)
        #下一个字符的x坐标相对于当前字符的x坐标的偏移量
        return linesize+2*gap+sep
    
    def main():
        colors=['black','magenta','green','blue','yellow','red','pink']
        width,height=1000,700
        linesize,gap=30,6
        x,y=-width//2+linesize+3*gap,height//2-(2*linesize+3*gap)
    
        s=input('请输入字符串:').upper()
        lens=len(s)
        
        t.setup(width,height,0,0)
        t.speed(0)
        t.penup()
        t.goto(x,y)
        t.pensize(5)
        for i in range(lens):
            t.pencolor(colors[i%7])
            x+=drawChar(s[i],linesize,gap)
            if x>=width//2-(linesize+3*gap):
                x,y=-width//2+linesize+3*gap,y-int(2.5*linesize)-3*gap
                t.penup()
                #移动到下一个字符的位置
                t.goto(x,y)
        t.hideturtle()
    if __name__=='__main__':
        main()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(13条)

报告相同问题?

问题事件

  • 系统已结题 5月17日
  • 已采纳回答 5月9日
  • 创建了问题 5月8日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算