2017-12-01 9 views
3

Iは、ユーザが指定したサイズに応じて番号をボードを印刷しなければならない次のコードは、(例えば、図3は、3×3の基板を意味する)を有する:Pythonで整数を使ってグリッドを作る方法は?

n = d * d 
    count = 1 
    board = [] 
    for i in range(d): 
     for j in range(d): 
      number = n - count 
      if number >= 0 : 
       tile = number 
       board.append[tile] 
      else: 
       exit(1) 
      count += 1 
      print(board) 

Iはグリッドでこれを取得する必要がボードサイズのIKEに3×3となるように、これ:私はしようと何

8 7 6 
5 4 3 
2 1 0 

リスト(SO [8 7 6] [5 4 ..等)の各行を取得し、次いでこれらのリストをグリッドに印刷します。そのためには、空のリストを作成してそのリストに数字を追加し、各リストが指定された長さになるようにすべてのdの後に停止しなければならないと思います。

私は今、私が望む数字のリストを持っていますが、それらをグリッドにどのように分けていますか?

本当に助けていただきありがとうございます。

+0

このコードでは、要件を満たすことさえできません。まともな試行を見せてください。 "あなたが' append'で試したこと "です。私たちはそれを解決するのを手助けすることができ –

+0

さて、私は今編集しました! –

+0

そう。あなたのコードの問題は何ですか? "うまくいきませんでした"を詳しく説明してください。具体的にする。 –

答えて

3

デフォルトでは、print()関数は、印刷する文字列の最後に "\ n"を追加します。この引数は、end引数を渡すことでオーバーライドできます。

print(string, end=" ") 

この場合、改行ではなくスペースを追加します。 そして、各行の最後に改行を手動でprint()で出力する必要があります。

n = d * d 
count = 1 
max_len = len(str(n-1)) 
form = "%" + str(max_len) + "d" 
for i in range(d): 
    for j in range(d): 
     number = n - count 
     if number >= 0 : 
      tile = number 
     else: 
      exit(1) 
     count += 1 
     print(form%(tile), end=" ") 
    print() 

EDIT:数字の最大長を計算することによって、印刷される形式を調整することができます。これはボードの任意のサイズをサポートする必要があります。

+0

ありがとうございます!これも私が試みたものですが、他のサイズではなく、3 x 3グリッドでしか動作しませんでした。どのように私は4または5のためにもそれを働かせることができますか? –

+0

ヒント - [format()](https://docs.python.org/3.4/library/functions)を参照してください。html#format) – SiHa

+0

あなたはprint( "%2d"%(tile)、end = "")を試すことができます – Sam

2

ここでは、正方形のサイズを取り、それを印刷する関数です。

説明が必要な場合はお気軽にお問い合わせください。

def my_print_square(d): 
    all_ = d * d 

    x = list(range(all_)) 
    x.sort(reverse=True) # the x value is a list with all value sorted reverse. 
    i=0 
    while i < all_: 
     print(" ".join(map(str, x[i:i+d]))) 
     i += d 


my_print_square(5) 
24 23 22 21 20 
19 18 17 16 15 
14 13 12 11 10 
9 8 7 6 5 
4 3 2 1 0 
1

ボードをネストされたリストとして作成できます。各リストはボード内の行です。

board = get_board(4) 

for line in reversed(board): 
    for number in line: 
     print("%2d" % number, end = " ") 
    print() 
:あなたは4つのまたは5のサイズのグリッドのための数字を揃えたい場合

8 7 6 
5 4 3 
2 1 0 

は、ちょうど%d書式指定子を使用します。

def get_board(n): 
    # get the numbers 
    numbers = [i for i in range(n * n)] 

    # create the nested list representing the board 
    rev_board = [numbers[i:i+n][::-1] for i in range(0, len(numbers), n)] 

    return rev_board 

board = get_board(3) 

# print each list(row) of the board, from end to start 
print('\n'.join(' '.join(str(x) for x in row) for row in reversed(board))) 

出力:そして、最後にそれらを連結

整列したグリッドを与えるもの:

15 14 13 12 
11 10 9 8 
7 6 5 4 
3 2 1 0 
関連する問題