【问题标题】:TypeError: list indices must be integers or slices, not str 'convert the chararter'TypeError:列表索引必须是整数或切片,而不是 str '转换字符'
【发布时间】:2017-11-06 10:34:19
【问题描述】:
Number = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]    
for n in range(0, 20):
      print(Number[n]+1\n)
InputNum3 = input()
Number[InputNum3] = ''.join(str('-'))

想要:

1       2
     3
     4
     .... 20

输入 2

想要:

1
      -
      3
      4...20

但结果是:

TypeError: 列表索引必须是整数或切片,而不是 str

【问题讨论】:

  • input 返回一个 str 您需要将其转换为 int 以使索引有效
  • 很奇怪,它给我带来了SyntaxError

标签: python string list type-conversion int


【解决方案1】:

做:

inputNum3 = int(input())

要获得一个整数,你不能通过一个字符串作为索引来访问列表。

您的变量名称应以小写字母开头。通常也是蛇形,所有小写以下划线分隔:

number = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
input_num = int(input())
number[input_num] = "-"

这里不需要.join(),因为无论如何你只想有一个字符。

您也可以像这样填写您的number 列表:

number = [x for x in range(20)]

这称为list comprehension

最后,如果您想打印完整列表,只需执行print(number),无需for 循环。

如果要打印从索引xy 的所有列表元素,可以使用列表切片:

例如number[3:15]

有关切片的更多示例,请参阅here

【讨论】:

    【解决方案2】:

    在 Python3 中,input() 返回一个字符串。然而,在 Python2 中, input() 返回您要查找的类型,一个整数。因此,您需要将 input() 函数转换为 int,因为您显然是在尝试按索引在列表中分配一个值。

    Number = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]    
    for n in range(0, 20):
       print(Number[n]+1\n)
    
    InputNum3 = int(input())
    Number[InputNum3] = ''.join(str('-'))
    

    【讨论】:

      【解决方案3】:
      Number = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]    
      for n in range(0, 20):
            print(Number[n]+1\n)
      >>InputNum3 = int(input())
      Number[InputNum3] = ''.join(str('-'))
      

      输入函数接受值作为字符串。

      【讨论】:

        猜你喜欢
        • 2015-12-09
        • 2021-11-28
        • 1970-01-01
        • 1970-01-01
        • 2020-05-14
        • 2018-10-13
        相关资源
        最近更新 更多