Python TypeError:range()整数结束参数预期错误

时间:2013-05-31 15:45:24

标签: python range

我有以下代码,在某些方面我想初始化

具有行和列范围的对象。

当我打印它们时,我会得到一个数字,这意味着据我所知

它应该适用于范围方法。

以下是代码:

class Board(object):
    def __init__(self, rows, columns):

        #small values
        if rows < 1 or columns < 2:
            SizeOutOfBoundException

        #large values
        if rows > 20 or columns > 50:
            SizeOutOfBoundException

        self.rows = rows;
        self.columns = columns; 
        self.arr = [[[0,'H'] for x in range(self.rows)] for y in range(self.columns)] # <- ERROR

但这是我不断得到的错误:

self.arr = [[[0,'H'] for x in range(self.rows)] for y in range(self.columns)] 
TypeError: range() integer end argument expected, got Board.

我如何操纵它才能工作?为什么这不起作用?

3 个答案:

答案 0 :(得分:1)

您很可能将Board对象作为行或列传递,而不是整数。

印刷:

self.rows
self.columns
type(self.rows)
type(self.columns)

在导致错误的行之前有助于确认这一点,或者你可以发布你正在使用的代码调用Board(行,列)吗?

答案 1 :(得分:1)

这对我有用。你确定问题不是缩进可能吗?您的构造函数没有正确缩进。

class Board(object):

    def __init__(self, rows, columns):

        #small values
        if rows < 1 or columns < 2:
            raise SizeOutOfBoundException

        #large values
        if rows > 20 or columns > 50:
            raise SizeOutOfBoundException

        self.rows = rows
        self.columns = columns
        self.arr = [[[0,'H'] for x in range(self.rows)] for y in range(self.columns)]

myboard = Board(3,4)
print myboard.arr

输出结果为:

[[[0,'H'],[0,'H'],[0,'H']],[[0,'H'],[0,'H'],[0, 'H']],[[0,'H'],[0,'H'],[0,'H']],[[0,'H'],[0,'H'],[ 0,'H']]]

答案 2 :(得分:0)

There's nothing wrong with your code

你是在实例化这门课吗?

b = Board(10, 10)
print b.arr