【问题标题】:Printing a smile face :)打印一张笑脸:)
【发布时间】:2017-05-25 17:43:39
【问题描述】:

所以我应该使用输入的 int 值的二维数组用 Ascii txt 打印笑脸。到目前为止,我的代码将 int 更改为 Ascii 然后打印,但是它只打印 2 行。

我确定这是我对代码的误解,但我不确定如何修复它。

我的代码:

def display(x):
    for i in x:
        for j in i:
            j = chr(j)
            print (j, end = ' ')

【问题讨论】:

  • 对于调试,当您的代码 print(len(i))print(len(x)) 在您的内部和外部循环的每次迭代中会发生什么?
  • 请使用您正在使用的特定python版本的标签。
  • 当我使用任何一个 x(len(x)) 时,它都会打印笑脸,但最后是 9。
  • 请阅读stackoverflow.com/help/mcve。这意味着示例 2d 输入数组、预期输出和实际输出。

标签: python python-3.x


【解决方案1】:

“二维数组”可能是一个序列序列,每个内部序列表示一行。因此,您需要在每行之后添加一个换行符。您的代码没有发出换行符,我怀疑您只看到 2 行,因为您的显示在某些时候添加了软换行符。

我认为您只需要在末尾添加一个print() 行。

            ...
            print (j, end = ' ')
        print()

这里是与示例面孔一起使用的等效代码。

# Create ints for known face
orig = '''\
_____
| O |
| - |
-----
'''

ints = [[ord(c) for c in line] for line in orig.splitlines()]
for line in ints: print(line)

# Reproduce orig

copy = '\n'.join(((''.join(chr(i) for i in line)) for line in ints))
print(copy)

打印

[95, 95, 95, 95, 95]
[124, 32, 79, 32, 124]
[124, 32, 45, 32, 124]
[45, 45, 45, 45, 45]
_____
| O |
| - |
-----

【讨论】:

  • 我喜欢你用原子创造宇宙的方式......忘记山和鼹鼠山的例子,它只是没有让你的帖子公正。谢谢......帮助?
【解决方案2】:

这个怎么样

def display(x):
    for i in x:
        for j in i:
            j = chr(j)
            print (j, end = ' ')
        print()

如果每个i 代表一行,则需要添加额外的打印以在下一行重新开始

【讨论】:

  • 这很有意义。感谢您的帮助!
【解决方案3】:

您需要使用 python 3.x 才能使用end=''。在 Python 2.x 中,您只需用逗号结束您的行。

print j,

【讨论】:

  • 我正在使用 python 3.x
  • 你也可以在 py2 中使用相应的未来导入
  • FWIW,打印功能在 Python 2.6+ 中可用,您只需在脚本顶部使用 from __future__ import print_function 即可,然后再进行其他导入。
猜你喜欢
  • 2018-12-13
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多