我想编写一个程序,它接受一个数字,然后将它的图形表示打印到控制台。例如,输入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
更新:我更正了语法错误。谢谢。我仍然得到一些有点奇怪的结果。
答案 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="")