2017-01-11 7 views
-7

私はint型値の入力2D配列を使用してAscii txtで笑顔を印刷することになっています。今のところ私のコードはintをAsciiに変更してから印刷しますが、2行しか印刷しません。笑顔を印刷する:)

私はこれが私の部分のコードの誤解であると確信していますが、私はそれを修正する方法がわかりません。

マイコード:

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

、および外側ループ? – selbie

+0

使用している特定のPythonバージョンのタグを使用してください。 – Soviut

+0

xのいずれか(len(x))を使用したとき、スマイリーフェイスが印刷されましたが、最後に9が付きました。 – Andrew

答えて

2

どのように各iはラインを表している場合、あなたは次の行

+0

これは非常に意味があります。助けてくれてありがとう! – Andrew

-4

あなたはend=''を使用するためのPython 3.xを使用しする必要があります。 Python 2.xでは、行をカンマで終了するだけです。この

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

について

print j, 
+0

私はpython 3.x – Andrew

+0

を使用しています。これはpy2で対応する将来のインポートを使用することもできます。 – Copperfield

+0

FWIW、印刷機能はPython 2.6以降で利用できます。上から 'from __future__ import print_function'を使うだけです。他のインポートの前にスクリプトを作成する。 –

3

にやり直すために余分な印刷を追加する必要がある「2次元配列は」おそらくシーケンスであります各内側の配列は直線を提示する。したがって、各行の後に改行を追加する必要があります。あなたのコードは改行を出さないので、ディスプレイにはある時点でソフト改行が追加されたため、2行しか表示されないと思われます。

最後にprint()行を追加するだけでいいと思います。

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

ここでは、顔の例で動作する同等のコードです。あなたのコード `プリント(LEN(I))`と `プリント(LEN(X))を持っている場合、あなたの内側の反復ごとに`何が起こるかをデバッグするための

# 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

関連する問題