我正在尝试将该伪代码翻译为Python。这是伪代码:
伪代码:
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")
我真的不知道为什么会出现这个错误 TypeError:'int'对象不可订阅
答案 0 :(得分:0)
ISBN = int(input(">"))
ISBN
是一个整数。
ISBN[Count]
尝试访问Count
的位置ISBN
。但你不能因为整数不是可订阅的
该怎么做:
ISBN = list(map(int, input('Please enter full ISBN: ')))
ISBN现在是一个整数列表,应该按预期工作。
答案 1 :(得分:0)
ISBN不是数组。
一个数组:
ISBN = [1,2,3,4]
访问数组:
ISBN[2]
将返回3
你究竟想用它做什么?
答案 2 :(得分:0)
仔细思考。
a = 5
print(a[1])
您希望打印什么?
数字不是列表。通过使用[]
s,您尝试访问对象中包含的内容,但是int不包含任何内容!他们只是数字。