-4

私が作る必要があるのは

          Col 0   Col 1   Col 2 
Row 0       1       0       1 
Row 1       1       1       1 
Row 2       1       1       1

数字は完全にランダムですが、ボードの作り方に完全に行き詰まっています。問題は、後で列と行に数字を追加できるようにする必要があることです。最初にリストにしてスペースを空けるか、そのままにして\tでスペースを空ける必要がありますか?

私が持っているのは乱数ジェネレーターだけです。次に何をすべきかわかりません。

def generate_random_number(size):
  number = ""
  for i in range(size):
    digits = random.randint(0, 1)
    numbers = number + str(digits)
  return numbers
4

4 に答える 4

2

私のアドバイスは次のとおりです。合理的な方法でデータを簡単に処理できるように、データ構造を選択してください。次に、データを視覚化する方法を決定できますが、データ構造の選択には影響しません。

この場合、ボードを整数のリスト (またはタプルのタプル) のリストとして保存するのがおそらく合理的です。

次に、たとえば次のように記述できます。

def row_sum(table, i):
    return sum(table[i])

def col_sum(table, i):
    return sum(row[i] for row in table)

def print_table(table):
    print ' '*colsize + '\t' + '\t'.join('Col {}'.format(i) for i, _ in enumerate(t))
    for i, row in enumerate(t):
        print 'Row {}'.format(i).ljust(colsize), '\t'.join(str(v).rjust(colsize) for v in row)
于 2012-12-02T11:41:30.903 に答える
1

リストのリストを作成することをお勧めします。基本的に行のリストであり、各行には多数のセルがあります。以下のコードは、0 または 1 のランダムな値で埋めます。行と列の値を合計する方法を示すコードもあります。

コード

import random, pprint

def random_row(size):
    return [random.randrange(2) for i in range(size)] 

data = [random_row(3) for i in range(3)]
pprint.pprint(data, width=20)
print 'row 1 sum:', sum(data[0])
print 'column 1 sum:', sum(row[0] for row in data)

出力

[[1, 0, 0],
 [0, 0, 0],
 [1, 1, 0]]
row 1 sum: 1
column 1 sum: 2
于 2012-12-02T11:49:44.380 に答える
0

2次元の「配列」のようなものを探していると思います。Pythonでは、リストのリストを使用して、記述した構造を作成できます。

#first a list of lists

grid=[[],[],[]]

#you can use it like this

#       |  Col 0        | Col 1        | Col 2
#---------------------------------------------------
# Row 0 |  grid[0][0]=1 | grid[0][1]=0 | grid[0][2]=1
# Row 1 |  grid[1][0]=1 | grid[1][1]=1 | grid[1][2]=1
# Row 2 |  grid[2][0]=1 | grid[2][1]=1 | grid[2][2]=1

行または列の数値の合計は、次のように簡単です。

def sum_row(row):
  return grid[row][0]+grid[row][1]+grid[row][2]

def sum_column(column):
  return grid[0][column]+grid[1][column]+grid[2][column]

さらに、randomNumber 関数で何をしているのかわかりません。乱数の文字列バージョンを返したいようですが、列または行のエントリを合計しようとすると問題が発生します。それにもかかわらず、実際に数値の文字列を取得しようとする場合は、次のように記述します。

  def generate_random_number(size):
    number=""
    for i in range(size):
      digit = random.randint(0, 1)
      number = number + str(digit)
    return number
于 2012-12-02T11:47:01.833 に答える
0

このコード例を見ると役に立ちますか?

x = []
for row in range(10):
    x.append([])

for row in x:
   for col in range(10):
       row.append(0)

これにより、タプルを使用してゼロの 10x10 グリッドが作成されます。実際には、それぞれが 10 個の数値を含む 10 個のタプルを含むタプルです。

役立つヒント、次のように入力します。

print(x)

次に、次のように入力します。

import pprint
pprint.pprint(x)

違いがわかります。pprint は「プリティ プリント」の略です。:)

于 2012-12-02T11:44:41.840 に答える