2017-03-28 4 views
0

학교 숙제를위한 코드를 작성 중입니다. 할당은 다음과 같습니다. "000"을 입력 할 때까지 책 코드를 읽은 코드를 작성한 다음 ISBN 및 ISSN에 입력 한 처음 네 자리 숫자에 따라 책을 두 가지 범주로 나눕니다.문자열 인덱스는 정수 여야하며

참고 : 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) 

같은 관한 어떤 도움을 주시면 감사하겠습니다 :

여기 내 코드입니다! 나는 학교에서 파이썬으로 첫해를 보냈습니다.

EDIT : 예상 출력은 책의 코드 번호가있는 두 개의 목록이어야합니다. 현재, 나는 어떻게 그리고 왜 있는지 확실하지 않은 "while"에 대한 자율적 인 루프에 직면 해 있습니다.

+2

여기에 귀하의 기대는 정확히 무엇입니까? –

+1

'booknumber [0,4]'대신'booknumber [: 4]'를 시도하십시오 – asongtoruin

+0

처음 네 자릿수를 추가 한 책은 ISSN이 issnarray에 추가되고 ISBN이 isbnarray에 추가되는 것입니다. – PitoguroGR

답변

1
if booknumber[0,4] == "ISBN": 

당신은 오류 메시지 ("지수는 정수 여야합니다") 설명 booknumber에 인덱스로 tuple을 통과하고 있습니다. 당신은 슬라이스 원하는 : 당신은 또한

if booknumber.startswith("ISBN"): 

더 나을 것이 경우

if booknumber[0:4] == "ISBN": 

을, 당신은 파이썬이 바로 수율을 000 입력하고 str(input())에 전달을 사용하는 경우 "0"input()은 표현식을 평가하고 000은 단지 0입니다. 파이썬 3에서는 괜찮지 만 파이썬 2에서는 raw_input()으로 바꾸거나 (예 : 0을 입력하고 "0"을 테스트하십시오.) BTW input은 파이썬 2에서는 안전하지 않습니다.

+0

고마워, 방금 알아 챘어, 지금은 000을 입력 루프에 갈 것입니다 멈추지 않을 것입니다 – PitoguroGR

+0

내 편집 확인하십시오. 예상대로입니다. –

+0

은 그와 매우 흡사합니다. 'input()'을 시도해보고 '000'을 입력하면 무슨 일이 일어날 수 있습니까? –

관련 문제