python, continue

조회수 69회

고수님들 안녕하십니까 코린이가 질문올립니당 !

numbers = [ (1,2),(10,0) ]

for a,b in numbers:
if b == 0:
    print("0으로 나눌 수는 없습니다.")
    continue
print("{}를 {}로 나누면 {}".format(a,b,a/b))

이걸 실행하면

1를 2로 나누면 0.5

0으로 나눌 수는 없습니다. 이렇게 두줄로 나옵니다.

print("0으로 나눌 수는 없습니다.") 이 코드가 먼저나와야 하는 것 아닌가요?
왜 이 코드가 두번째로 나오는건가요?

감사함니당

  • 왜 "0으로 나눌 수는 없습니다"가 먼저 나와야 한다고 생각하는지 질문에 보충해 줄 수 있겠어요? 그 이유를 쓰다보면 스스로 왜그런지 알 수도 있거든요. daewon 2019.11.13 03:20
  • 넵 '''다음 코드는 numbers에 있는 튜플을 받아들여서 튜플의 첫번째 숫자를 두번째 숫자로 나누는 일을 합니다. 이 때, b가 0이면 0으로 나눌 수는 없습니다.라고 출력하는데요. 이 if else문에서 continue문을 이용하여 else를 사용하지 않도록 변경해 보세요'' 라는 문제입니다. 제가 이해한걸 설명드리겠습니다. numbers 라는 리스트안에 두개의 튜플이 존재한다. 그리고 for in 반복문이 쓰였고, continue문법과 format문법이 쓰였다. numbers 라는 리스트안의 값을 a,b 두 변수에 차례로 집어넣어서 반복해준다. : (콜론으로 그렇다면) 만약 b가 0이라면 '0으로 나눌 수는 없습니다.' 를 출력해라 이것이 '참' 이라면 continue(반복문의 처음으로 돌아간다)해라. 따라서 다시처음으로 가는데 제 질문 1. (1,2) 가 대입되지 않고 다시 for 반복문의 처음으로만 가는 건가요? 아니면 처음부터 a,b자리에 (1,2)라는 리스트 안의 값(실행인자. argument )이 대입이 되는건가요? 순서를 잘 모르겠습니다. ㅠㅠ 이 질문은 새로운 질문 게시글에 올려두겠습니다. 이정운 2019.11.13 15:22
  • 이해가 되었습니다 감사합니다!!! 이정운 2019.11.13 18:02

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    위의 코드는 들여쓰기가 잘못되어 오류가 발생할겁니다. for 라인 아래로 들여쓰기를 제대로 했다는 가정하에 생각해봅시다.

    numbers = [ (1,2),(10,0) ]
    
    for a,b in numbers:
        if b == 0:
            print("0으로 나눌 수는 없습니다.")
            continue
        print("{}를 {}로 나누면 {}".format(a,b,a/b))
    

    a는 첫번째 반복시 1 이 되고 두번째 반복시 10 이 됩니다.

    b는 첫번째 반복시 2 가 되고 두번째 반복시 0 이 됩니다.

    if b == 0: 조건은 두번째 반복시 충족되는 조건입니다.

    정리하면 첫번째 반복시 1를 2로 나누면 0.5 출력이 되고 이어서 두번째 반복시 0으로 나눌 수는 없습니다. 가 출력됩니다.


    이런 문제는 라인단위로 디버깅을 하면 쉽게 파악되는 문제입니다.

    우선 pdb(http://pythonstudy.xyz/python/article/505-Python-%EB%94%94%EB%B2%84%EA%B9%85-PDB) 사용법을 숙지하시기 바랍니다.

    • 답변감사합니다 영훈님 그런데 제가 부족한건지 이해가 잘 안되네요 ㅠㅠ 알려주신 pdb의 사용법을 익히고 다시 보겠습니다 감사해용! 이정운 2019.11.13 15:32

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

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.