首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的for循环只重复打印第一个if语句?

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

Stack Overflow用户
提问于 2021-08-27 19:42:31
回答 2查看 69关注 0票数 0

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

代码语言:javascript
复制
#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")

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

代码语言:javascript
复制
['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']

我的预期产出是:

代码语言:javascript
复制
['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子句中,那么它将正确地打印出来,但我想了解为什么原始代码没有

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-27 19:46:18

您决定更改if's和put:i == 0 or i == 7i == 1 or i == 6

代码语言:javascript
复制
#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")
票数 0
EN

Stack Overflow用户

发布于 2021-08-27 19:44:35

if i == 0 or 7:

这一声明实质上如下

if i == 0 or 7 != 0

所以,因为7总是大于1,所以它总是正确的。

若要解决此问题,请尝试以下方法

if i == 1 or i == 7

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68958639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档