我不明白我所犯的错误。我尝试将displayGrid和updateGrid隔离到另一个txt文件中,而不需要输入ValueError函数,它可以工作。但是,现在我将它输入到我的实际文件中,并对输入进行ValueError检查,现在它不再工作了。我不明白的是,在displayGrid的第一次迭代中,错误不会显示,但是当我试图再次使用它进行更新时,第87行会显示一个错误。以下是我得到的全部错误:
文件“C:/User/Dust/Desktop/111/trial.py”,第87行,在displayGrid打印中(“AC.26”+ gridrow-1,end = "")
TypeError:只能将str (不是"int")连接到str
下面是我的代码(对于上下文,我正在制作一个connect4游戏):
def play():
grid,grid_height,grid_width,p1_name,p1_char,p2_name,p2_char=getGameSettings()
displayGrid(grid,grid_height,grid_width)
updateGrid(grid,grid_height,grid_width,p1_char,p2_char)
displayGrid(grid,grid_height,grid_width)
updateGrid(grid,grid_height,grid_width,p1_char,p2_char)
displayGrid(grid,grid_height,grid_width)
def getGameSettings():
#PLAYER 1 NAME
while True:
p1_name=input("Enter p1_name: ")
if len(p1_name) > 15 or p1_name == '': #Validation of input p1_name
print("Input a valid name. Max of 15 characters only.")
p1_name=input("Enter p1_name: ")
else:
break
#PLAYER 1 CHARACTER
while True:
p1_char=input("Enter p1_character: ")
if len(p1_char) != 1 or p1_char=='' : #Validation of input p1_character
print("1 character only.")
p1_char=input("Enter p1_character: ")
else:
break
#PLAYER 2 NAME
while True:
p2_name=input("Enter p2_name: ")
if len(p2_name) > 15 or p2_name == p1_name or p2_name == '': #Validation of input p2_name
print("Max of 15 characters only or choose a different name.")
p2_name=input("Enter p2_name: ")
else:
break
#PLAYER 2 CHARACTER
while True:
p2_char=input("Enter p2_character: ")
if len(p2_char) != 1 or p2_char == p1_char or p2_char == '': #Validation of input p2_char
print("1 character only or choose a different character from player 1")
p2_char=input("Enter p2_character: ")
else:
break
while True: #VALIDATION OF INPUT OF GRID_WIDTH
try:
global grid_height
grid_height=int(input("Enter grid_height(6-10): "))
except ValueError: #if input is not the right type()
print('Ivalid input type. Enter an integer')
continue
if grid_height > 10 or grid_height < 6: #to check if input is within accepted values
print('Height must be less than 11 and greater than 5.')
continue
break
while True: #VALIDATION OF INPUT OF GRID_WIDTH
try:
global grid_width
grid_width=int(input("Enter grid_width: "))
except ValueError: #if input is not the right type()
print('Ivalid input type. Enter an integer')
continue
if grid_width > 9 or grid_width < 7: #to check if input is within accepted values
print('Width must be less than 10 and greater than 6.')
continue
break
#SETTING UP THE GRID
grid=[]
for row in range(grid_height): # FOR ROW
z =[]
for col in range(grid_width): # FOR COLUMN
z.append(" ")
grid.append(z)
return grid,grid_width,grid_width,p1_name,p1_char,p2_name,p2_char
def displayGrid(grid,grid_height,grid_width):
for row in range(grid_height):
for col in range(grid_width+1):
print("|" + grid[row-1][col-1],end = "")
print()
print(" "+" ".join([str(i) for i in range(1, grid_width+1)]))
return grid
def updateGrid(grid,p1_char,p2_char,p1_name,p2_name):
while True:
try:
move= int(input('Enter your move: '))
except ValueError:
print('Plese enter a valid input.')
if move < 1:
print('Please enter a valid input.')
continue
break
for i in range(1,grid_height+1):
if grid[grid_height-i][move-2]== " ":
grid[grid_height-i][move-2]= p1_char
else:
if grid[0][move-2] != " ":
updateGrid(grid,grid_height,grid_width,p1_char,p2_char)
else:
continue
break
return grid
#def get_input(player, grids, )
#def isWin():
#def isDraw():
#def play():
#displayGrid()
#updateGrid(grid)
if __name__ == '__main__':
play()发布于 2019-09-25 02:07:31
你可以用多种方法解决这个问题。您可以通过以下方式将grid[row-1][col-1]转换为str:
print("|" + str(grid[row-1][col-1]), end="")如果使用的是Python 3.6+,则可以使用f-字符串:
print(f"|{grid[row-1][col-1]}", end="")如果您的Python版本是< 3.6,那么使用str.format
print("|{}".format(grid[row-1][col-1]), end="")https://stackoverflow.com/questions/58090214
复制相似问题