a=['apache\n','decal\n','did\n','neep\n','noon\n','refer\n','river\n']
with open('words.txt','w')as f:
f.writelines(a)
with open('words.txt','r')as f:
b=f.readlines()
count=0
for i in b:
count+=1
i=i.strip('\n')
for j in range(((len(i))//2)):
if i[j]!=i[-1-j] :
b.pop(count-1)
break
for x in b:
print(x.strip('\n'))
이렇게 입력하면 결과가
decal
did
noon
refer
이렇게 나오는데 왜 decal 도 함께 나오는 걸까요?
a=['apache\n','decal\n','did\n','neep\n','noon\n','refer\n','river\n']
이건 없어야 할 것 같습니다.
with open('words.txt','r')as f:
words=f.readlines()
count=0
for word in words:
count+=1
word=word.strip('\n')
for i in range(((len(word))//2)):
if word[i]!=word[-1-i] :
words.pop(count-1)
break
for Palindrome in words:
print(Palindrome.strip('\n'))
선생님 말씀대로 윗 세줄을 지워도 decal은 사라지지않네요..
해설 참조해서 pop으로 리스트에서 삭제하지않고 True인것만 판별 후에 출력하니까
정답대로 회문이 잘 나오던데 이 코드에서는 왜 decal도 같이 나온건지 혹시 아시나요? 생각해봐도 모르겠어요 ㅠ 문제는 풀었는데 너무 궁금함
with open('words.txt','r')as f:
words=f.readlines()
count=0
for word in words:
count+=1
word=word.strip('\n')
for i in range(((len(word))//2)):
if word[i]!=word[-1-i] :
words[count-1]=False
break
for Palindrome in words:
if Palindrome !=False:
print(Palindrome.strip('\n'))
정답은 이렇게 제출 했습니다.
http://pythontutor.com/visualize.html#mode=edit
소스 코드를 조금 고쳐서 파이썬 시각화 도구에서 한 단계씩 실행해보세요.
포럼 상단에 공지로 고정한 Thonny를 쓰면 로컬에서 직접 돌려보면서 확인할 수 있고, 온라인에서는 파일 읽기는 쓸 수 없으니 코드를 고쳐서 단계별로 실행하면서 내부 동작을 확인하세요. 그러면 이해가 될 겁니다.
어떻게 동작하는지 알면 버그도 발견할 수 있습니다.