不转换为字符串而不转换为字符串的整数(python)

时间:2015-02-25 03:32:49

标签: python string python-3.x int

似乎我的代码没有将列表中的整数转换为字符串。以下是我的代码中的问题:

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])

很抱歉,如果错误非常新鲜。这是我的第一年编码。

4 个答案:

答案 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]

现在像以前一样打印电路板。