Python 将数字打印到控制台

Python 将数字打印到控制台,python,string,python-3.x,Python,String,Python 3.x,我想写一个程序,获取一个数字,并将它的图形表示输出到控制台。例如,通过输入123,我应该期望得到: 下面是我如何实现它的,从实现one和two开始 def g (n): n = list(str(n)) dic = { '1': """1 1 1 1 1 1

我想写一个程序,获取一个数字,并将它的图形表示输出到控制台。例如,通过输入
123
,我应该期望得到:

下面是我如何实现它的,从实现
one
two
开始

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

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

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=”“)

您在字典中使用了分号。使用
。它也不起作用,因为它将在新行中打印每个数字。你必须在打印前准备好每行文本。我纠正了语法错误。我仍然得到一个奇怪的结果。要打印ascii艺术,可以使用figlet,例如,
print(pyfiglet.figlet_格式('1234',font='doh'))
。另一个。不幸的是,当我应用你的算法时,我仍然得到同样奇怪的表情。在第一行中,字符被推到左角。是否修复了缩进?实际上,您可以使用例如
祝福
(定位ANSI代码)和
colorama
(Windows支持)包返回。虽然你不需要打印数字。