파이썬 if문 질문드립니다.

조회수 1003회

a=input('숫자를 여러개 입력하세요: ')
a=list(a)

try:
if a.index('%') :
del a[a.index('%')]

elif  a.index(' ') :                  
   del a[a.index(' ')]

except :
pass

for i in range(len(a)) :
print('\u2665' * 2*int(a.pop(0)))

=간단하게 짜본 하트프로그램인데요 에러가 도저히 이해가 가지않습니다.. if부분은 실행이 되는데 elif 부분은 도저히 실행이 안되고 오류를 발생시키네요 ..

코드가 이상한가 싶어 하나하나 때보고 치면 잘되고 .. 도저히 모르겠습니다. 도움 부탁드립니다.

1 답변

  • 질문을 등록할때는 사용하는 OS정보, PYTHON 버전 정도는 함께 등록해주는 것이 좋습니다.

    또한 소스 제시를 할 때는 해당 소스가 의도하는 바(목적등)를 명시해줘야 열람자가 빠르게 이해할 수 있습니다.

    우선 원하는대로 안되는 이유는 리스트의 index 메소드 사용방법을 숙지 못했기 때문입니다.

    index 는 항목이 존재하는 경우 리스트내 위치를 리턴하지만 없는 경우라면 예외가 발생합니다.

    try:                                      
        if a.index('%'):                      
           del a[a.index('%')]
        elif a.index(' '):                  
           del a[a.index(' ')]
    except:                                  
        pass
    

    입력을 1 2 3 이렇게 1 공백 2 공백 3을 넣었다면....

    a.index('%') 에 의해 '%'가 없으므로 except 로 빠지고 맙니다.

    당연히 elif는 실행이 되지 않습니다.

    index(' ') 라고 하면 제일 첫번째 발견된 항목의 위치만 리턴합니다.

    즉 공백이 2개 있지만 1개 항목만 삭제한다는 뜻 입니다.

    질문자가 의도하는 바를 표현하려면 공백이거나 '%' 인 경우를 삭제를 해주면 됩니다.

    In [17]: args = input()
    1%2 3 4
    
    In [18]: argsList = list(args)
    
    In [19]: argsList
    Out[19]: ['1', '%', '2', ' ', '3', ' ', '4']
    
    In [20]: list(''.join(argsList).replace('%', '').replace(' ', ''))
    Out[20]: ['1', '2', '3', '4']
    
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)