如果列表中的x似乎不起作用

2024-03-29 12:54:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python构建一个单人战舰游戏,当我在IDLE中运行到目前为止的代码时,无论我输入什么,它每次都会打印出“Error in input”,并停留在while循环中。我不知道是什么问题。 代码如下:

from random import randint

def five_die(): #function 5 sided die
    return str(randint(1,5))

def print_board(board):  #function to print board
    letters = []
    letters.append([" "])
    letters.append(["A"])
    letters.append(["B"])
    letters.append(["C"])
    letters.append(["D"])
    letters.append(["E"])
    for i in letters:
        print(i, end=" ")
    print("\n")
    for i in range(1,31):
        print (board[i-1],end=" ")
        if i % 6== 0:
            print("\n")


visual_board = [] #creating the board
for num in range(30):
    if num % 5 == 0:
        visual_board.append([str(num//5+1)])
    visual_board.append(["O"])


print_board(visual_board) #calling print_board function

actual_board = [] #creating the "actual board"
for num in range(1,6):
    actual_board.append(["A"+str(num)])
    actual_board.append(["B"+str(num)])
    actual_board.append(["C"+str(num)])
    actual_board.append(["D"+str(num)])
    actual_board.append(["E"+str(num)])

column = five_die() #placing ship
row = five_die()
if column=="1":
    column="A"
elif column=="2":
    column="B"
elif column=="3":
    column="C"
elif column=="4":
    column="D"
else:
    column="E"
ship=column+row

breaker = 1 #getting user guess and checking validity
while breaker == 1:
    ship_guess=str(input("\n\nGuess a square (from A1 to E5)!: "))
    ship_guess=ship_guess.upper()
    if ship_guess in actual_board:
        breaker=2
    else:
        print ("Error in input!")

谢谢你的帮助!你知道吗


Tags: inboardforifcolumnnumprintvisual
1条回答
网友
1楼 · 发布于 2024-03-29 12:54:36

您将board列表中的每个条目包装在第二个列表中,而不是直接编写字符串。e、 g

letters = []
letters.append([" "])

所以,试试:

letters = []
letters.append(" ")

。。。等等

"A"["A"]不是一回事,所以“in”测试不匹配。你知道吗

相关问题 更多 >