• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

for 문을 이용한 구구단 작성 문의 - 흐름이 이해가 가지 않습니다.

21.01.30 15:11 작성 조회수 264

0

Chapter 4-2에서

for 문을 이용한 구구단 작성하는 법 이 아래 처럼 나왔습니다. 

.

for i in range (2, 10):

    for j in range (1, 10):

        print('{:4d}'.format(i*j), end = '')

    print()

.

그런데 마지막 줄 print() 이 있고 없고가 차이가 큽니다.. 

처음 세 줄만 돌리면 

2   4   6   8  10  12  14  16  18   3   6   9  12  15  18  21  24  27  .

.

.

print() 추가 하면 

   2   4   6   8  10  12  14  16  18
   3   6   9  12  15  18  21  24  27
   4   8  12  16  20  24  28  32  36

이렇게 나옵니다.. 

왜 저렇게 되는지 알 수 있을까요...? 

.

.

질문 하나더 

print()을 들여쓰기 해서 

for i in range (2, 10):

    for j in range (1, 10):

        print('{:4d}'.format(i*j), end = '')

        print()

이렇게 해서 돌리면 

결과가 이렇게 나옵니다. 

.

2
   4
   6
   8
  10
  12
  14
  16

왜 이렇게 되는지 잘 와닿지가 않습니다.. 

설명 부탁드려도 될까요?

답변 2

·

답변을 작성해보세요.

2

PARK JUNYEONG님의 프로필

PARK JUNYEONG

2021.01.30

구구단을 출력하기 위해서는 이중 for문으로 코드를 작성해야합니다

러시안블루님이 올린 코드를 기준으로 보여드리면 형태가 이런식으로 되어있습니다.

1.  첫번째 for문에 print()가 있는 경우

2. 첫번째 for문에 print()가 없는 경우

3. 두번째 for문에 들여쓰기한 print()가 있는 경우

전체적 큰 틀을 이야기 드리면,

구구단을 출력하기 위해서는 이중 for문(반복문)사용해야 합니다!

.

일단, 중복되는 부분에 대해 이야기를 드리면

첫 번째 for문으로 표시 (ex 2단, 3단, 4단, ...)

두 번째 for문숫자로 표시 (ex ㅁx2, ㅁx3, ㅁx4, ...)

두번째 for문 안에 있는 print()문출력 폭을 4칸으로 결과 값을 출력하겠다는 의미입니다.

.

그러고 나서 여기서 두 번째 for문이 다 끝나고

첫 번째 for문으로 돌아가서 시작하기 전에 print()를 사용해서 단을 구분시켜줄지

아니면 print()를 사용하지 않고 단 구분 없이 한 줄로 출력을 할 건지 등을 결정하게 됩니다.

.

만약 1번처럼 print()를 사용하게 된다면,

   2   4   6   8  10  12  14  16  18
   3   6   9  12  15  18  21  24  27
   4   8  12  16  20  24  28  32  36

이런식으로 출력되고

2번처럼 print()를 사용하지 않는다면,

2   4   6   8  10  12  14  16  18   3   6   9  12  15  18  21  24  27   4   8  12  16  20  24  28  32  36 

이런식으로 출력됩니다 :)

.

그리고 3번째처럼 두번째for문에 print()를 추가하면 

3번 이미지처럼 결과 출력 후 줄바꿈이 되어 다음으로 결과가 출력됩니다!

그래서 결과가 이렇게 나오는거죠~~

   2
   4
   6
   8
  10
  12
  14
  16
  18
   3
   6
   9
  12
  15
  18
  21
  24
  27
   4
   8
  12
  16
  20
  24
  28
  32
  36

첫 번째 for문은 그저 단의 값만 넣어주고

두 번째 for문에서 값 출력해주고 줄바꿈해서 다음 값을 출력해주는 코드입니다~

-----------------------------------------------------------------------------------------------

첫번째와 두번째 모두 파이썬 시각화 사이트에 들어가서 돌리시면

금방 이해하실 거로 생각합니다 :)

http://pythontutor.com/visualize.html#mode=edit

사이트에 들어가면 코드를 저렇게 복붙하시고

그 다음에 Visualize Execution을 누르시면 아래 이미지처럼 나옵니다

이 상태에서 Next> 버튼을 하나씩 누르면 어떻게 작동되는지 옆에 Print output으로 나옵니다.

-----------------------------------------------------------------------------------------------

도움이 되었으면 우측하단 또는 좌측하단에 하트 한번만 눌러주세요 :)

또한, 해결이 안된 경우 답글 작성 부탁드립니다!

0

감사합니다