-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

看看这个代码示例会有帮助吗?

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

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

这将使用元组创建一个 10x10 的零网格。实际上,它是一个包含十个元组的元组,每个元组包含十个数字。

有用的提示,输入:

print(x)

然后输入:

import pprint
pprint.pprint(x)

你会看到区别。pprint 代表“漂亮的印刷品”。:)

于 2012-12-02T11:44:41.840 回答
0

我认为您正在寻找类似二维“数组”的东西。在 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 回答