为什么我的 for 循环只重复打印第一个 if 语句?

二项式_侏儒

我正在尝试创建一个代表棋盘的列表。我有这个代码:

#possible list items
EMPTY = "-"
ROOK = "ROOK"
KNIGHT = "KNIGHT"
BISHOP = "BISHOP"
QUEEN = "QUEEN"
KING = "KING"
PAWN = "PAWN"
board = []

royal_row = [] #list for row containing king

pawn_row = []#list for pawn row

row = [] #generic row

#setting the board
for i in range(8):
    if i == 0 or 7:
        royal_row = [ROOK,KNIGHT,BISHOP,QUEEN,KING,BISHOP,KNIGHT,ROOK]
        board.append(royal_row)
        
    elif i == 1 or 6:
        pawn_row = [PAWN for i in range(8)]
        board.append(pawn_row)
        
    else: 
        row = [EMPTY for i in range(8)]
        board.append(row)

for i in range(8):
    print(board[i], end = "\n")

当我运行此代码时,它只会打印:

['ROOK', 'KNIGHT', 'BISHOP', 'QUEEN', 'KING', 'BISHOP', 'KNIGHT', 'ROOK']

['ROOK', 'KNIGHT', 'BISHOP', 'QUEEN', 'KING', 'BISHOP', 'KNIGHT', 'ROOK']

['ROOK', 'KNIGHT', 'BISHOP', 'QUEEN', 'KING', 'BISHOP', 'KNIGHT', 'ROOK']

['ROOK', 'KNIGHT', 'BISHOP', 'QUEEN', 'KING', 'BISHOP', 'KNIGHT', 'ROOK']

['ROOK', 'KNIGHT', 'BISHOP', 'QUEEN', 'KING', 'BISHOP', 'KNIGHT', 'ROOK']

['ROOK', 'KNIGHT', 'BISHOP', 'QUEEN', 'KING', 'BISHOP', 'KNIGHT', 'ROOK']

['ROOK', 'KNIGHT', 'BISHOP', 'QUEEN', 'KING', 'BISHOP', 'KNIGHT', 'ROOK']

['ROOK', 'KNIGHT', 'BISHOP', 'QUEEN', 'KING', 'BISHOP', 'KNIGHT', 'ROOK']

我的预期输出是:

['ROOK', 'KNIGHT', 'BISHOP', 'QUEEN', 'KING', 'BISHOP', 'KNIGHT', 'ROOK']

['PAWN', 'PAWN', 'PAWN', 'PAWN', 'PAWN', 'PAWN', 'PAWN', 'PAWN']

['-', '-', '-', '-', '-', '-', '-', '-']

['-', '-', '-', '-', '-', '-', '-', '-']

['-', '-', '-', '-', '-', '-', '-', '-']

['-', '-', '-', '-', '-', '-', '-', '-']

['PAWN', 'PAWN', 'PAWN', 'PAWN', 'PAWN', 'PAWN', 'PAWN', 'PAWN']

['ROOK', 'KNIGHT', 'BISHOP', 'QUEEN', 'KING', 'BISHOP', 'KNIGHT', 'ROOK']

如果我将 1、0、6 和 7 与它们自己的 elif 子句分开,那么它会正确打印,但我想了解为什么原始代码没有

皮耶罗

您决定更改 if 并放入:i == 0 or i == 7i == 1 or i == 6

#possible list items
EMPTY = "-"
ROOK = "ROOK"
KNIGHT = "KNIGHT"
BISHOP = "BISHOP"
QUEEN = "QUEEN"
KING = "KING"
PAWN = "PAWN"
board = []

royal_row = [] #list for row containing king

pawn_row = []#list for pawn row

row = [] #generic row

#setting the board
for i in range(8):
    if i == 0 or i == 7:
        royal_row = [ROOK,KNIGHT,BISHOP,QUEEN,KING,BISHOP,KNIGHT,ROOK]
        board.append(royal_row)

    elif i == 1 or i == 6:
        pawn_row = [PAWN for i in range(8)]
        board.append(pawn_row)

    else:
        row = [EMPTY for i in range(8)]
        board.append(row)

for i in range(8):
    print(board[i], end = "\n")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我写了一个if / elseif语句,但是它只给我第一个答案,为什么?

遍历 for 循环:为什么我的第一个 if 语句不运行?

为什么我的 for 循环只打印第一个结果?

为什么我的if语句卡在第一个值上?

为什么 if 语句忽略第一个 if?

为什么我的“为什么”循环中的“如果”语句不能更改我的一个对象?

为什么只打印我的 DataSource 的第一个对象?

我的存储过程只执行我的第一个select语句,而我编写了三个?

为什么我的 for 循环只抓取第一个元素?

为什么我的 Javascript 循环只返回第一个值?

我无法在循环中使用第一个if语句。

为什么这个 if 语句给我一个 ValueError?

当只选择一个元素时,为什么我的 if 语句返回大于 1?

我的批处理文件中只运行第一个 lambda 更新语句

为什么我的 switch 语句只运行一次?

为什么这些 if 语句不起作用,对我所说的任何内容的响应都是“嘿”,这应该是仅对第一个 if 语句的响应

if 语句只调用一个函数,为什么?

为什么我的 If 语句在我的 For 循环中被忽略?

为什么在第一个exec语句之后返回此值?

为什么“else if”语句的第一个条件总是错误的?

为什么 IF 语句遍历所有 AND 条件,即使第一个为 false

为什么第二个else if语句不执行,而是执行第一个if语句?

为什么第一个SQL不能像第二个语句那样使用“ AND”语句?

为什么只打印双向链接列表的第一个值,而我的程序却崩溃了

为什么printf只打印字符串中的第一个单词?

为什么该程序只打印第一个字符?

为什么变量只传递jQuery中for循环的第一个值?

for循环后的分号是什么意思?为什么在第一循环语句中有一个j ++?

为什么我的 while 循环覆盖了 if 语句