2017-06-05 246 views
-2
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('-')) 

想:类型错误:列表索引必须是整数或片,而不是STR '转换chararter'

1  2 
    3 
    4 
    .... 20 

输入2

想:

1 
     - 
     3 
     4...20 

但结果是:

TypeError: list indices must be integers or slices, not str

+2

'input'返回'str'你需要将其转换为'int'为了索引是有效 – EdChum

+0

奇怪的,它提出了'SyntaxError'我。 – Goyo

回答

0

务必:

inputNum3 = int(input())

得到一个整数,你不能用String作为索引来访问列表。

您的变量名称应该以小写字母开头。一般来说snakecase也由下划线分隔全部小写:

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

最后,如果要打印完整列表,则不需要使用for循环,而只需执行print(number)

如果你想打印从指数x所有列表元素y你可以使用列表切片:

number[3:15]例如。

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

0

在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('-')) 
0
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('-')) 

input function accept values as string.

相关问题