繁体   English   中英

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

[英]function stuff. please explain how it works

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

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)

第二个块与第一个块有什么关系? 此外,当我不作为论点加入时,它会给我一个错误。

我尝试用其他东西来改变论点,但没有用。

我们首先将 board 定义为 []。

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

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

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

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

WW
WW

我假设您使用的是 python 2.X。 你的板是一个列表类型,一开始是空的。 在 for 循环中,范围为 0 到 5(实际上是它的 0 到 4,包括 0)。 ["0"]*5 导致创建字符串列表,其中 "0" 重复五次。 如果您尝试使用“Test!”*5,则会导致 Test!Test!Test!Test!Test! 在交互窗口中输出。 现在在这个循环的末尾 [['0', '0', '0', '0', '0'], ['0', '0', '0', '0', '0' ], ['0', '0', '0', '0', '0'], ['0', '0', '0', '0', '0'], ['0' , '0', '0', '0', '0']] 将分配给作为列表列表(列表嵌套)的板。

在第二个块中,for 循环获取棋盘的每一行,即列表中的每个嵌套列表并打印相同的内容。 现在应该在 for 循环内缩进第二个块中的打印语句吗? 您已经将它们保持在相同的缩进中。 如果您不向第二个块传递任何参数,解释器将通知异常,因为它需要可迭代参数。 因此,任何可迭代类型都可以像字典、集合等一样工作。一切都与您的 Python 冒险有关。

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

# 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM