TIL 22 | Python, 중첩 루프 사용, 별 출력

ryan·2020년 8월 5일
0

Python

목록 보기
10/18

계단식 별 출력

목표
*
**
***
****
*****

중첩루프

반복문 안에 반복문이 들어가는 형태를 중첩 루프(다중 루프)라고 한다. 그리고 반복문의 루프 인덱스 변수는 index의 첫 글자를 따서 i를 사용하는데, 반복문 안에 반복문이 들어갈 때는 변수 이름을 i, j, k처럼 i부터 알파벳 순서대로 짓는다.

중첩루프 예시
for i in range(횟수):		# 바깥쪽 루프
	for j in range(횟수):	# 안쪽 루프
    		가로 처리 코드
        코드
for i in range(5):		# 5번 반복. 바깥쪽 루프는 세로 방향
    for j in range(5):		# 5번 반복, 안쪽 루프는 가로 방향
        print('j:', j, sep='', end=' ')		# j값 출력. end에 ' '를 지정하여 줄바꿈 대신  한 칸 띄움
    print('i:', i, '\\n', sep='')		# i값 출력, 개행 문자 모양도 출력
    						# 가로 방향으로 숫자를 모두 출력한 뒤 다음 줄로 넘아간다.
                   				# (print는 기본적으로 출력 후 다음 줄로 넘어간다.)
j:0 j:1 j:2 j:3 j:4 i:0\n
j:0 j:1 j:2 j:3 j:4 i:1\n
j:0 j:1 j:2 j:3 j:4 i:2\n
j:0 j:1 j:2 j:3 j:4 i:3\n
j:0 j:1 j:2 j:3 j:4 i:4\n

중첩 루프는 2차원 평면을 다룰 수 있으므로 이미지 처리, 영상 처리, 좌표계 처리 등에 주로 쓰인다.

사각형으로 별 출력

for i in range(5):          
    for j in range(5):
        print('*', end='')      # 별 출력. end에 ''를 지정해서 줄바꿈을 하지 않음
    print()                     # 가로 방향으로 별을 그린 뒤 다음 줄로 넘어감
                                # (print는 출력 후 기본적으로 다음 줄로 넘어감)
**********
**********
**********
**********
**********
**********
**********
**********
**********
**********

print는 출력 후 기본적으로 다음 줄로 넘어간다는 말은 (end='\n')

for i in range(5):
    print(i)

이런 말이다. (하나하나 일일이 말해야 알겠다...ㅠ)

0
1
2
3
4

가로 별 11개, 세로 별 4개인 사각형 만들기

for i in range(4):
    for j in range(11):
        print('*', end='')
    print()
***********
***********
***********
***********

계단식으로 별을 출력해보자

for i in range(10):        # 0부터 9까지 10번 반복. 세로 방향
    for j in range(10):    # 0부터 9까지 10번 반복. 가로 방향
        if j <= i:                # 세로 방향 변수 i만큼
            print('*', end='')    # 별 출력. end에 ''를 지정하여 줄바꿈을 하지 않음
    print()    # 가로 방향으로 별을 다 그린 뒤 다음 줄로 넘어감
               # (print는 출력 후 기본적으로 다음 줄로 넘어감)
*
**
***
****
*****
******
*******
********
*********
**********

대각선으로 별을 출력해보자

if j == i:처럼 가로 방향 변수와 세로 방향 변수가 같을 때만 별을 출력하면 대각선이 되겠지?

for i in range(8):        # 0부터 7까지 8번 반복. 세로 방향
    for j in range(8):    # 0부터 7까지 8번 반복. 가로 방향
        if j == i:                # 세로 방향 변수와 같을 때
            print('*', end='')    # 별 출력. end에 ''를 지정하여 줄바꿈을 하지 않음
    print()    # 가로 방향으로 별을 다 그린 뒤 다음 줄로 넘어감
               # (print는 출력 후 기본적으로 다음 줄로 넘어감)
*
*
*
*
*
*
*
*

???
IDLE이나 콘솔에서는 문자 출력을 않아면, 다음 문자는 현재 위치에 출력되서 모두 왼쪽으로 몰리게 된다. 따라서 별을 출력하지 않는 부분에서는 print로 공백을 출력해줘야 별이 원하는 위치에 오게 된다.

for i in range(8):        # 0부터 7까지 8번 반복. 세로 방향
    for j in range(8):    # 0부터 7까지 8번 반복. 가로 방향
        if j == i:                # 세로 방향 변수와 같을 때
            print('*', end='')    # 별 출력. end에 ''를 지정하여 줄바꿈을 하지 않음
        else:                     # 세로 방향 변수와 다를 때
            print(' ', end='')    # 공백 출력. end에 ''를 지정하여 줄바꿈을 하지 않
    print()    # 가로 방향으로 별을 다 그린 뒤 다음 줄로 넘어감
               # (print는 출력 후 기본적으로 다음 줄로 넘어감)
*       
 *      
  *     
   *    
    *   
     *  
      * 
       *
profile
👨🏻‍💻☕️ 🎹🎵 🐰🎶 🛫📷

0개의 댓글