파이썬 if문 질문드립니다.
조회수 1008회
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']
댓글 입력