2017-01-11 74 views
-7

所以我應該用一個輸入的int值的二維數組打印一張帶有Ascii txt的笑臉。到目前爲止,我的代碼將int更改爲Ascii,然後打印,但它只打印2行。打印一個微笑的臉:)

我敢肯定,這是對我的代碼的誤解,但我不知道如何解決它。

我的代碼:

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

對於調試,當你有你的代碼'打印(LEN(I))'和'打印時會發生什麼(LEN(X))'在你內心的每一次迭代和外環? – selbie

+0

請使用您正在使用的特定Python版本的標籤。 – Soviut

+0

當我使用x(len(x))中的任何一個時,它將打印笑臉,但最後是9。 – Andrew

回答

2

這個怎麼樣

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

如果每個i代表一條線,你需要添加額外的打印下一行重新開始

+0

這非常有道理。感謝您的幫助! – Andrew

-4

您需使用Python 3.X使用end=''。在Python 2.x中,您只需用逗號結束行。

print j, 
+0

我正在使用python 3.x – Andrew

+0

你也可以在py2中使用它,以及相應的將來導入 – Copperfield

+0

FWIW,打印函數在Python 2.6+中可用,你只需要使用'from __future__ import print_function'其他進口之前的腳本。 –

3

A「二維數組」大概是一個序列的序列,每個內部序列呈現一條線。因此,您需要在每行之後添加一個換行符。你的代碼沒有發現新行,我懷疑你只能看到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 | 
| - | 
----- 
+0

我喜歡你如何使一個宇宙離開一個原子....忘記山和痣山的例子它只是沒有做你的帖子正義。感謝......幫助? – Andrew