我正在尝试在python中构建一种单人游戏战斗游戏,当我运行目前在IDLE中的代码时,无论我输入什么,它每次打印出“输入错误”,并且留在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!")
感谢您的帮助!
答案 0 :(得分:5)
您将第二个列表中的每个条目包装在您的电路板列表中,而不是直接写入字符串。 e.g。
letters = []
letters.append([" "])
所以,试试:
letters = []
letters.append(" ")
......等等。
"A"
和["A"]
不是一回事,所以你的" in"测试不会匹配。