作为大学练习的一部分,我们将通过 Python 作为介绍性编程语言进行学习。我已经知道如何按照合理的标准进行编程,所以有人告诉我,如果我能展示一些高质量的东西,我可以跳过这门课。
就此而言,我采用了文本游戏 Star Trek ( http://www.dunnington.u-net.com/public/startrek/startrek.c ) 的 C 版本并用 Python 重写了它,运行良好,当我习惯了 Python 的特定要求时。
我的问题似乎是 Stackoverflow 上的一个常见问题,即创建和使用可用的多维数组。经过多次搜索,我已经掌握了创建整数或字符串等多维列表的窍门,但是当涉及到类的多维数组(或列表列表,准确地说)时,一切都变得松散了。
这是我的课:
class quadrant:
klingonCount = 0
baseHere = 0
starCount = 0
这是创建类列表的众多尝试之一:
quadrants = [quadrant] * 9
for y1 in range(1,9):
quadrants[y1] = [quadrant] * 9
这是从http://docs.python.org/2/faq/programming#how-do-i-create-a-multidimensional-list复制的
当我用一个类代替 0 时,打印数组显示整个数组引用了一个类,而不是像我希望的那样有很多不同的类。
问题是数组只保存在循环的最后一次迭代中输入的值,而不是单独的值。
我不是 100% 熟悉类的使用,所以可能我只是想多次引用一个类,而我实际上需要很多类。我吗?帮助!
我正在使用 Python 2.7,这是推荐的语言。
为了参考,这是尝试填充多维列表的代码:
for x in range(1,9):
for y in range(1,9):
j = randint(1,99)
if (j < 5):
numBases += 1
baseHere = 1
temp = getKlingons(difficulty)
klingonsHere += temp
quadrants[x][y].baseHere = baseHere
quadrants[x][y].klingonCount = temp
s = randint(1,9)
quadrants[x][y].starCount = s