继续收到TypeError:'int'对象不是可订阅的

问题描述:

我试图将该伪代码翻译成Python。这里是伪代码:继续收到TypeError:'int'对象不是可订阅的

伪代码:

FOR Count <- 1 TO 13 DO 
    OUTPUT "Please enter next digit of ISBN: " 
    INPUT ISBN[Count] 
ENDFOR 
CalculatedDigit <- 0 
Count <- 1 
WHILE Count < 13 DO 
    CalculatedDigit <- CalculatedDigit + ISBN[Count] 
    Count <- Count + 1 
    CalculatedDigit <- CalculatedDigit + ISBN[Count] * 3 
    Count <- Count + 1 
ENDWHILE 
WHILE CalculatedDigit >= 10 DO 
    CalculatedDigit <- CalculatedDigit - 10 
ENDWHILE 
CalculatedDigit <- 10 - CalculatedDigit 
IF CalculatedDigit = 10 
    THEN CalculatedDigit <- 0 
ENDIF 
IF CalculatedDigit = ISBN[13] 
    THEN OUTPUT "Valid ISBN" 
    ELSE OUTPUT "Invalid ISBN" 
ENDIF 

的Python:

for Count in range(1,13): 
    print("Please enter next digit of ISBN:") 
    ISBN = int(input(">")) 
    ISBN[Count] 
CalculatedDigit = 0 
Count = 1 
while Count < 13: 
    CalculatedDigit = CalculatedDigit + ISBN 
    Count = Count + 1 
    CalculatedDigit = CalculatedDigit + ISBN * 3 
    Count = Count + 1 
while CalculatedDigit >= 10: 
    CalculatedDigit = CalculatedDigit - 10 
    CalculatedDigit = 10 - CalculatedDigit 
if CalculatedDigit == 10: 
    CalculatedDigit = 0 
if CalculatedDigit == ISBN[13]: 
    print("Valid ISBN") 
else: 
    print("Invalid ISBN") 

我真的不知道为什么我得到这个错误 类型错误: '诠释'对象不可自订

+1

你想做什么?你认为是什么问题?你有什么尝试?另请参阅:http://stackoverflow.com/help/how-to-ask –

ISBN = int(input(">")) 

ISBN是一个整数。

ISBN[Count] 

尝试访问位置ISBNCount。但你不能因为整数不会被标化

该怎么做:

ISBN = list(map(int, input('Please enter full ISBN: '))) 

ISBN现在是一个整数列表,并按照您的预期应该工作。

+1

在该代码中还有其他类似的错误:'如果CalculatedDigit == ISBN [13]:' –

+1

那么正确的方式怎么做呢? ? –

+0

@AnasYusef我编辑了我的帖子。刷新页面 –

ISBN不是数组。

数组: ISBN = [1,2,3,4]

访问数组: ISBN[2]将返回3

究竟什么是你想用它做?

+1

国际标准书号是书籍的序列号。他们有一个校验码。他试图验证ISBN号码 –

想一想。

a = 5 
print(a[1]) 

您希望打印什么?

数字不是列表。通过使用[] s,您试图访问对象中包含的内容,但ints不包含任何内容!他们只是数字。