将数字打印到控制台

时间:2014-12-22 12:51:22

标签: python string python-3.x

我想编写一个程序,它接受一个数字,然后将它的图形表示打印到控制台。例如,输入123我应该得到:

enter image description here

以下是我尝试实施它的方法,从实施onetwo开始。

def g (n):
    n = list(str(n))
    dic = { '1': """1   
                  1
                  1
                  1
                  1
                  1
                  1
                  """,
            '2': """2222
                      2
                       2
                       2
                  2  2
                2
                2
                2
                  22222"""
            }
    for i in n:
        print(dic[i])

但是我得到了输入' 121':

>>> 
>>> g(121)
1   
                  1
                  1
                  1
                  1
                  1
                  1

2222
                      2
                       2
                       2
                  2  2
                2
                2
                2
                  22222
1   
                  1
                  1
                  1
                  1
                  1
                  1

更新:我更正了语法错误。谢谢。我仍然得到一些有点奇怪的结果。

1 个答案:

答案 0 :(得分:2)

python中的"""text"""语法表示您输入的每个字符都将包含在字符串中,包括空格。因此,如果你缩进文本中的数字,空格将包含在字符串中并将被打印,这就是为什么你看到的数字到目前为止偏向右边。

也就是说,由于控制台的工作方式,您的算法仍然无效。打印时,分别打印每一行,一个接一个。您不能使用打印功能打印第一行的一部分,第二行的一部分,然后打印上一行的第二部分。打印一行后,就无法返回。

你应该这样做:

for i in range(NUMBER_OF_LINES):
    s = ""
    for j in n:
        s += dic[j].split('\n')[i]  # There are more efficient ways to do this part...
    print(s)

顺便说一下,如果您需要在没有新行的情况下进行打印,可以像下面这样使用它:print("Hello World!", end="")