Python 字符串索引必须是整数,并且在发出时

Python 字符串索引必须是整数,并且在发出时,python,Python,我正在为学校作业写一些代码。任务如下: 编写一个代码,读取图书代码直到输入“000”,然后根据输入的ISBN和ISSN的前4位数字将图书分为两类 注意:使用str并检查代码的前缀(在这种情况下为ISBN和ISSN) 这是我的密码: bookarray = [] booknumber = str(input("Give me a book code - Type 000 if you want to cancel")) while booknumber != "000": bookarray

我正在为学校作业写一些代码。任务如下: 编写一个代码,读取图书代码直到输入“000”,然后根据输入的ISBN和ISSN的前4位数字将图书分为两类

注意:使用str并检查代码的前缀(在这种情况下为ISBN和ISSN)

这是我的密码:

bookarray = []
booknumber = str(input("Give me a book code - Type 000 if you want to cancel"))
while booknumber != "000":
   bookarray.append(booknumber)
   booknumber = str(input("Give me a book code - Type 000 if you want to cancel"))
   if booknumber[0,4] == "ISBN":
       isbnarray = booknumber
   elif booknumber[0,4] == "ISSN":
       issnarray = booknumber
print(issnarray)
print(isbnarray)
如有任何与此相关的帮助,将不胜感激!我在学校学习python的第一年

编辑:预期的输出应该是两个带有书籍代码的列表。 目前,我面临一个关于“while”的自动循环,我不知道如何以及为什么

if booknumber[0,4] == "ISBN":
您正在将一个
元组作为索引传递给
booknumber
,这解释了错误消息(“索引必须是整数”)。你想要一片:

如果是那样的话,你最好还是

if booknumber.startswith("ISBN"):

另外,如果您使用的是python 2,那么输入
000
并将其传递给
str(input())
只会产生
“0”
,因为
input()
对表达式求值,
000
就是
0
。Python3没有问题,但Python2可以切换到
raw_input()
(或者让用户输入
0
退出,然后测试
“0”
。顺便说一句,输入在Python2中是不安全的)。

您在这里的期望是什么?尝试
书号[:4]
而不是
书号[0,4]
我的期望或多或少是,在issnarray中添加前四位数字为ISSN的书籍,在issnarray中添加ISBN的书籍isbnarray@PitoguroGR一般来说,其他用户不会喜欢被要求解决其他人的家庭作业问题。然而,你做了一些努力来描述你的问题,并且你坦率地说出了问题的由来,所以公平对待你!你所能做的就是尽量让你的问题更清楚,并提供预期用户输入(ISBN编号)的示例,并明确显示输出应该是什么@feedMe感谢您的澄清,我知道并且我确信会有一些用户不欣赏我要求解决我的家庭作业。虽然任务要求使用str非常复杂,但涉及到很多问题。要么是我的错,要么是老师/书的错,要么是编译器的错,这就是我最初在这里发帖的原因。除了str和int之外,我们还没有教过任何其他方法“要求”用户输入东西。谢谢,我刚刚注意到,事情是现在while将继续循环,输入000不会停止,闻起来很像这样。你能试试
input()
并键入
000
看看会发生什么吗?再次感谢,尽管原始输入没有定义,我很有信心它已被删除。我正在使用Pyzo 4.3.1和Python3.4.5。是的,我尝试过input()仍然是一个循环
if booknumber.startswith("ISBN"):