似乎我的代码没有将列表中的整数转换为字符串。以下是我的代码中的问题:
def aidrawboard(aiboard):
for i in aiboard:
inttostr = aiboard[i]
str(inttostr)
aiboard[i] = inttostr
for i in aiboard:
if aiboard[i] == '3':
aiboard[i] = '0'
break
print(aiboard)
print("THIS IS THE AI BOARD")
print(' | |')
print(' ' + aiboard[7] + ' | ' + aiboard[8] + ' | ' + aiboard[9])
print(' | |')
print('-----------')
print(' | |')
print(' ' + aiboard[4] + ' | ' + aiboard[5] + ' | ' + aiboard[6])
print(' | |')
print('-----------')
print(' | |')
print(' ' + aiboard[1] + ' | ' + aiboard[2] + ' | ' + aiboard[3])
print(' | |')
该代码适用于战舰游戏。列表aiboard的示例是[0,0,2,0,0,0,0,0,0,0]
我收到错误" TypeError:无法转换' int'对象为str隐含地#34;,错误指向
print(' ' + aiboard[7] + ' | ' + aiboard[8] + ' | ' + aiboard[9])
很抱歉,如果错误非常新鲜。这是我的第一年编码。
答案 0 :(得分:4)
由于存储在abiword列表中的项目是整数,因此您需要在打印时将元素的数据类型(您要打印)转换为字符串。
print(' ' + str(aiboard[7]) + ' | ' + str(aiboard[8]) + ' | ' + str(aiboard[9]))
答案 1 :(得分:2)
或者你可以定义一个print_out电路板的功能:
def print_board(aiboard):
str_state = map(str, aiboard)
print(' | |')
print(' ' + str_state[7] + ' | ' + str_state[8] + ' | ' + str_state[9])
print(' | |')
print('-----------')
print(' | |')
print(' ' + str_state[4] + ' | ' + str_state[5] + ' | ' + str_state[6])
print(' | |')
print('-----------')
print(' | |')
print(' ' + str_state[1] + ' | ' + str_state[2] + ' | ' + str_state[3])
print(' | |')
通过这种方式,易于阅读和维护。
答案 2 :(得分:2)
问题是您从未将变量inttostr
设置为您创建的字符串。在你的代码中
for i in aiboard:
inttostr = aiboard[i]
str(inttostr)
aiboard[i] = inttostr
inttostr
仍然是一个int。有几种方法可以解决这个问题。
for i in aiboard:
inttostr = aiboard[i]
inttostr= str(inttostr)
aiboard[i] = inttostr
或更好:
for i in aiboard:
aiboard[i]= str(aiboard[i])
答案 3 :(得分:0)
Pythonic转换方式是:
aiboard_str = [str(i) for i in aiboard]
现在像以前一样打印电路板。