功能的东西。请解释它是如何工作的

时间:2015-09-06 14:01:13

标签: python function

这段代码应该打印一个5x5的o,每行5行排成一行。

board = []
for x in range(0,5):
    # runs code 5 times.(range of 0,5 = 5)
    board.append(["O"] * 5)

def print_board(i):
    for row in i:
    print row
print print_board(board)

第二个块与第一个块有什么关系?另外,当我不作为论据时,它给了我一个错误。

我尝试用其他东西切换参数,但它没有用。

3 个答案:

答案 0 :(得分:0)

我们首先将棋盘定义为[]。

然后我们添加一个元素[O]*5(这只给出五个O),五次。

所以数组现在是[OOOOO,OOOOO,OOOOO,OOOOO,OOOOO]

然后第二个块定义了一个通用函数print_board(i),它在一个新行中打印某个数组的每个元素。

例如,如果board2[WW,WW],那么print_board(board2)将打印

WW
WW

答案 1 :(得分:0)

我假设你使用的是python 2.X.您的电路板是一个列表类型,在开头是空的。 for for循环范围为0到5(实际上是0到4,包括0)。 [" 0"] * 5导致字符串使用" 0"创建一个列表。重复了五次。如果您尝试使用"测试!" * 5,它将导致测试!测试!测试!测试!测试!在交互式窗口中输出。现在在这个循环结束时[[' 0',' 0',' 0',' 0',' 0& #39;],[' 0',' 0',' 0',' 0',' 0' ],[' 0',' 0',' 0',' 0',' 0'],[ ' 0',' 0',' 0',' 0',' 0'],[&#39 ; 0',' 0',' 0',' 0',' 0']]将分配给电路板是一个列表列表(列表的嵌套)。

在第二个块中,for循环获取板的每一行,即列表中的每个嵌套列表并打印相同的行。现在第二个块中的print语句是否应该在for循环中缩进?你把它们保持在同一个凹痕中。如果您没有将任何参数传递给第二个块,则解释器将通知异常,因为它需要可迭代参数。因此,任何可迭代类型都可以像字典,集等一样工作。最好用你的python冒险。

答案 2 :(得分:0)

也许一点结构会帮助你更好地理解它;)

# function definition

def print_board(i):       # definition of function "board"
    for row in i:         # this function can be called from anywhere
        print row         # in your program and requires an argument
                          # to know what to do

# main program

board = []                # create variable board

for x in range(0,5):      # insert values ...
    # runs code 5 times.(range of 0,5 = 5)
    board.append(["O"] * 5)

print_board(board)        # tell function to print this variable