[인공지능사관학교] Python (3)

Suhyeon Lee·2025년 6월 11일

과제 리뷰

  • 매개변수와 인수와의 관계 이해하기
    • end=를 사용한 이유
      • print()는 자동 줄바꿈이 들어가 있는데 end=는 줄바꿈을 원하는 조건으로 대체하는 것
      • end= 미사용 시:
      • 기호를 넣어보면:

Q.
print("var1은", var1, "이 할당되었고", type(var1), "형식입니다.", sep = ' ', end = ' ') 입력했는데 sep 함수를 써도 괜찮나요?
A.
네, 괜찮습니다.

해답은 다양하고 여러 개 존재합니다.
동일한 결과가 도출되는 답을 많이 찾아보세요!

  • vsCode에서 ctrl+alt+shift 누르고 아래 화살표 누르면 커서가 아래로 내려와 열 block 복사 가능
    • block 단위 편집 가능
#004일차-실습-3-해답-ver1
name = input("이름 입력 : ")
age = int(input("나이 입력 : "))
print("%s님의 나이는 %d살입니다."%(name,age))

#004일차-실습-3-해답-ver2
name = input("이름 입력 : ")
age = input("나이 입력 : ")
print("%s님의 나이는 %s살입니다."%(name,age))
  • 해답 ver2 설명

    • input 함수를 통해 입력한 값을 이용하여 연산식에 활용하는데 사용한다면 나이를 정수형으로 형변환 하여야 하지만, 입력한 숫자를 단순히 출력하는 것으로만 사용한다면 반드시 정수형 형변환 함수인 int()를 사용하지 않아도 됩니다.
    • 쓰임의 방식에 따라 형변환 함수 사용 여부를 결정하면 된다는 의미!
  • %s, %d

    • JAVA나 C에서 사용하는 형태
  • input()

    • 사람이 키보드로 입력한 내용을 변수에 할당하는 역할
    • 모두 문자열로 저장됨
      • 123 입력 → 문자 "123"임
      • 따라서 입력한 숫자를 피연산자로 활용하고 싶다면 형변환을 꼭 해 주어야 함

제어문: 조건문과 반복문

  • Compound statement
  • 제어문(control statement) ↔ 일반문(statement)
    • 제어문: 프로그램의 흐름을 제어하는 역할을 하는 문장
    • 일반문: 제어문 외의 모든 문장. 일반적인 문장.

학습 목표

  1. 조건문에 대해 이해
  2. 반복문에 대해 이해

조건문(if, elif, else)

  • 주어진 조건에 따라 코드 블록을 실행할지 말지를 결정하는 문법
  • ★ 조건문은 조건식종속 문장(코드 블럭)으로 구성 ★
    • 조건식이 참/거짓인지에 따라 종속 문장의 실행 여부가 결정
    • '위계'가 존재

조건식 → 비교연산자/관계연산자
연산식의 결과 → True/False

if 문

  • 조건식이 참인 경우에만 종속 문장이 실행되는 코드
x = 10
if x > 5:
	print("x는 5보다 큽니다.")

else 문

  • if 조건식이 거짓인 경우 종속 문장이 실행되는 코드
x = 2
if x > 5:
	print("x는 5보다 큽니다.")
else:
	print("x는 5보다 작거나 같습니다.")

elif 문

  • 최초의 if 조건식이 거짓이고, 다른 조건식을 추가하려 할 때 사용
  • "else if"의 줄임말
x = 7
if x > 10:
	print("x는 10보다 큽니다.")
elif x == 7:
	print("x는 7입니다.")
else:
	print("x는 10보다 작거나 같습니다.")

기본 구조

if 조건식 1:
	종속 문장 1
elif 조건식 2:
	종속 문장 2
else:
	종속 문장 3

예제

age = int(input("나이를 입력하세요:"))
if age < 13:
	print("어린이입니다.")
elif age < 20:
	print("청소년입니다.")
else:
	print("성인입니다.")

연습 문제

사용자로부터 입력 받은 정수가 양수인지 음수인지를 판별하는 프로그램을 작성하세요.
(0인 경우도 포함합니다.)

num = int(input("정수를 입력하세요:"))
if num > 0:
	print("양수입니다.")
elif num == 0:
	print("0입니다.")
else:
	print("음수입니다.")
  • 형변환 함수에 대해 한번 더 생각해보기
    • print(int("2")): str -> int
    • print(float("2.4")): str -> float
    • print(int(2.4)): float -> int
    • print(int("2.4"))
      • str -> float -> int가 되는가? NO!
      • 실제 동작 str -> int: 이 때 정수는 소수점을 사용하지 않으므로 에러가 발생함
num = float(input("정수를 입력하세요:"))
if num == int(num):
	if num > 0:
		print("입력한 정수는 양수입니다.")
	elif num == 0:
		print("입력한 정수는 0입니다.")
	else:
		print("입력한 정수는 음수입니다.")
else:
	print("입력한 수는 정수가 아닙니다.")
  • if, elif: 변수명으로 쓸 수 없는 예약어
  • :: 조건식의 끝을 알리는 기호

반복문(for, while)

  • 특정 조건을 만족할 때까지 코드를 반복해서 실행하는 구문

for 문

  • in 연산자와 함께 반복 가능 객체(리스트, 튜플, 문자열, range 함수)를 사용하여 종속 문장을 반복
    • 반복 가능 객체: range, 리스트, 문자열 등과 함께 사용
      • 리스트, 튜플, 문자열 → "index"를 가지고 있다는 공통점!

기본 구조

for 변수 in 반복 가능 객체:
	종속 문장

예제

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
	print(fruit)

# 출력 결과:
# apple
# banana
# cherry

range() 활용한 for 문

  • for 문은 횟수 반복문으로 불리며, 대부분은 range 를 이용하여 횟수를 지정해서 사용하는 편
  • range() 함수는 지정된 범위의 숫자를 반환
    • range(5)는 0부터 4까지 숫자를 생성
for i in range(5):
	print(i)
    
# 출력 결과:
# 0
# 1
# 2
# 3
# 4
  • range() can be used in three ways:
    • range(stop): Generates a sequence of numbers starting from 0 up to (but not including) stop, incrementing by 1.
    • range(start, stop): Generates a sequence of numbers starting from start up to (but not including) stop, incrementing by 1.
    • range(start, stop, step): Generates a sequence of numbers starting from start up to (but not including) stop, incrementing by step.

예제

for i in range(2, 10 , 2): # 2부터 10 전까지 2씩 증가
	print(i)
    
# 출력 결과:
# 2
# 4
# 6
# 8
iprint(i)range() stop
22F
44F
66F
88F
10T

리스트 안에서 조건문 사용

  • for 문에서 리스트 요소에 대해 조건을 추가할 수 있음
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in numbers:
	if num % 2 == 0:
		print(num, "짝수입니다.")
    else:
    	print(num, "홀수입니다.")
    
# 출력 결과:
# 1 홀수입니다.
# 2 짝수입니다.
# 3 홀수입니다.
# 4 짝수입니다.
# …
numbers = list(range(1, 11))

# 기본형
for number in numbers:
  if number % 2 == 0:
     print(number, "짝수")
  else:
     print(number, "홀수")

# 리스트 컴프리헨션
even = [x for x in numbers if x % 2 == 0]
odd = [x for x in numbers if x % 2 == 1]

print(f"짝수: {even} 홀수: {odd}")

연습 문제

1부터 100까지의 숫자 중 짝수만 출력하는 프로그램을 작성하세요.

for i in range(2, 101 , 2): # 2부터 101 전까지 2씩 증가
	print(i)
for i in range(1, 101):
	if i % 2 == 0:
		print(i)

while 문

  • 조건이 참일 동안 반복

    • 조건식이 참인 경우에 종속 문장을 계속 반복 실행하는 코드
  • for 문과 비교

    • for 문의 경우 증가 시점 고정, while 문은 증가 시점 조정 가능
    • while 문은 for 문에 비해 유연함

기본 구조

while 조건식:
	종속 문장 1

예제

x = 0
while x < 5:
	print(x)
    x += 1

# 출력 결과:
# 0
# 1
# 2
# 3
# 4

break와 continue

  • for 문과 while 문 모두에서 사용 가능
  • break
    • 반복문을 완전히 종료
    • 반복문의 종속문장을 탈출
  • continue
    • 반복문의 현재 실행을 건너뛰고 다음 반복을 계속 실행

예제: break

for i in range(10):
	if i == 5:
    	break
    print(i) # 0, 1, 2, 3, 4 출력

예제: continue

for i in range(5):
	if i == 2:
    	continue
    print(i) # 0, 1, 3, 4 출력

→ 2는 출력되지 않음!

무한 루프(while True)

  • 조건 없이 무한히 실행되는 반복문
    • break 문을 이용해 종료해야 함!
while True:
	command = input("명령을 입력하세요 (exit 입력 시 종료): ")
    if command == "exit":
    	print("프로그램 종료")
        break
    print("입력한 명령:", command)

# 입력 예시
# 명령을 입력하세요 (exit 입력 시 종료): hello
# 입력한 명령: hello
# 명령을 입력하세요 (exit 입력 시 종료): exit
# 프로그램 종료

연습 문제

  1. for 문을 사용하여 1부터 10까지의 숫자의 합을 구하는 프로그램을 작성하세요.
sum_i = 0
for i in range(1, 11):
    sum_i += i
print(sum_i)	
  1. for 문 활용: 리스트 numbers = [1, 2, 3, 4, 5]의 요소를 하나씩 출력하는 코드를 작성하세요.
numbers = [1, 2, 3, 4, 5]
for num in numbers:
    print(num)
  1. while 문 활용: 1부터 10까지 출력하는 while 문을 작성하세요.
i = 1
while i < 11:
    print(i)
    i += 1
  1. 무한 루프 활용: 사용자로부터 "exit"을 입력밭기 전까지 계속 입력을 받는 while 문을 작성하세요.
while True:
    order = input("명령어를 입력해 주세요(exit 입력 시 종료):")
    if order == "exit":
        print("exit를 입력받아 종료합니다.")
        break
    print("입력된 명령어: ", order)
  1. 리스트를 활용한 for 문: 다음 리스트의 요소를 하나씩 출력하는 코드를 작성하세요.
    animals = ["dog", "cat", "elephant", "tiger"]
animals = ["dog", "cat", "elephant", "tiger"]
for i in animals:
    print(i)
  1. 리스트와 for 문 활용: 다음 리스트의 모든 결과를 제곱한 결과를 새로운 리스트에 저장하고 출력하는 코드를 작성하세요.
    numbers = [2, 4, 6, 8]
numbers = [2, 4, 6, 8]
exp_list = []
for num in numbers:
    exp_list.append(num**2)
print(exp_list)

num = [2, 4, 6, 8]
num2 = [n**2 for n in num]
print(num2)
  • List Comprehension
    • 리스트 함축 표현식 또는 향상된 for문 사용이라고도 함
    • numbers 의 요소를 차례로 뽑아와서 n 에 할당한 후, n2n^2 연산의 결과로 요소를 만들어 차례로 리스트에 할당

중첩문

중첩 조건문과 반복문

  • 조건문과 반복문은 중첩하여 사용할 수 있음

예제

x = 10
if x > 5:
	if x < 15:
    	print("x는 5보다 크고 15보다 작습니다.")
x = 10
if x > 5 and x < 15:
	print("x는 5보다 크고 15보다 작습니다.")

→ 범위를 표현하는 일상 문법(5<x<15): 파이썬 이후 나온 스크립트형 프로그래밍 언어에서 가능

age = 20
if age >= 18:
	print("성인입니다.")
    if age >= 65:
    	print("노인이십니다.")
    else:
    	print("아직 노인은 아닙니다.")
else:
	print("미성년자입니다.")

여러 개의 조건 검사(and, or, in)

  • 여러 개의 조건을 동시에 검사하려면 and, or, in 등을 활용
    • and, or, in 등: 논리 연산자

예시

age = 25
country = "Korea"

if age >= 18 and country == "Korea":
	print("한국에서 성인입니다.")
fruit = "apple"

if fruit in ["apple", "banana", "cherry"]:
	print(fruit, "은 목록에 있습니다.")
for i in range(3): # 외측 반복문
	for j in range(2): # 내측 반복문
    	print(f"i = {i}, j = {j}")

연습 문제

  1. 5x5 크기의 별표로 된 사각형을 출력하는 프로그램을 작성하세요.
for i in range(5):
    print('*'*5)

→ 중첩 반복문 사용해서 푸는 게 원래 문제 의도라고 함

for i in range(5): # 5줄 반복
    for j in range(5): # 각 줄마다 5개의 별표 출력
        print("*", end="") # 줄바꿈 없이 별표 출력
    print() # 다음 줄로 넘어감

for i in range(5):
바깥쪽 for 루프는 0부터 4까지의 숫자를 반복하여 5줄을 출력합니다. i는 현재 줄 번호를 나타냅니다.
for j in range(5):
안쪽 for 루프는 0부터 4까지의 숫자를 반복하여 각 줄에 별표를 5개씩 출력합니다. j는 현재 별표 위치를 나타냅니다.
print("*", end=""):
별표를 출력하고, end=""를 사용하여 줄바꿈 없이 별표를 나란히 출력합니다.
print():
안쪽 for 루프가 끝나면 print()를 사용하여 다음 줄로 넘어갑니다.

  1. 사용자로부터 두 정수를 입력받고, 그 사이에 있는 모든 숫자를 출력하는 프로그램을 작성하세요.
num1 = int(input("첫 번째 숫자를 입력하세요:"))
num2 = int(input("두 번째 숫자를 입력하세요:"))
if num1 > num2:
    for i in range(num2, num1+1):
        print(i)
elif num1 < num2:
    for i in range(num1, num2+1):
        print(i)
else:
    print(num1)
# min(), max()
a = int(input("첫 번째 숫자?"))
b = int(input("두 번째 숫자?"))
for i in range(min(a, b), max(a, b)+1):
    print(i)
a, b = map(int, [input("입력하라"), input("입력하라")])
print(" ".join(map(str, range(min(a,b), max(a,b)+1))))
  1. 나이를 입력받아
    0 ~ 12세: "어린이"
    13 ~ 18세: "청소년"
    19세 이상: "성인"
    을 출력하세요.
age = int(input("나이를 입력하세요:"))
if age <= 12:
    print("어린이")
elif age <= 18:
    print("청소년")
else:
    print("성인")
  1. 중첩 if 문 활용: 사용자로부터 정수 3개를 입력받아 가장 큰 숫자를 출력하는 프로그램을 작성하세요.

    【입력 예시】
    3개의 숫자를 입력하세요: 12 45 7
    【출력 예시】
    가장 큰 숫자는 45입니다.

num1, num2, num3 = map(int, input("3개의 숫자를 입력하세요:").split())
if num1 > num2:
    if num1 > num3:
        print(f"가장 큰 숫자는 {num1}입니다.")
    else:
        print(f"가장 큰 숫자는 {num3}입니다.")
elif num2 > num3:
    print(f"가장 큰 숫자는 {num2}입니다.")
else:
    print(f"가장 큰 숫자는 {num3}입니다.")
  • num1이 가장 클 경우: if num1 > num2if num1 > num3 조건을 모두 만족할 때만 출력
  • num1이 가장 크지 않을 경우:
    • num2가 num3보다 클 때: num2가 가장 큼
    • 그렇지 않으면: num3이 가장 큼

왜 오류가 없는가?
if num1 > num2:에서 같을 때는 else로 넘어가고, 이후 각 블록에서 if num1 > num3: 또는 if num2 > num3:에서 같을 때도 else로 넘어가면서 결국 세 수 중 가장 큰 값을 정상적으로 출력할 수 있음

num1, num2, num3 = map(int, input("3개의 숫자를 입력하세요:").split())
if num1 > num2:
    if num1 > num3:
        print(f"가장 큰 숫자는 {num1}입니다.")
    else:
    	print(f"가장 큰 숫자는 {num3}입니다.")
else:
    if num2 > num3:
        print(f"가장 큰 숫자는 {num2}입니다.")
    else:
        print(f"가장 큰 숫자는 {num3}입니다.")
  • 사실 if 안 쓰고 더 쉽게 풀 수도 있음:
num1, num2, num3 = map(int, input("3개의 숫자를 입력하세요:").split())
print(f"가장 큰 숫자는 {max(num1, num2, num3)}입니다.")
num_list = list(map(int, input("3개의 숫자를 입력하세요: ").split()))

max_num = num_list[0]
if num_list[1] > max_num:
    max_num = num_list[1]
if num_list[2] > max_num:
    max_num = num_list[2]

print(f"가장 큰 숫자는 {max_num}입니다.")
a, b, c = map(int, input("3개의 숫자를 입력하세요:").split())
if a >= b and a >= c:
    x = a
elif b >= a and b >= c:
    x = b
else:
    x = c
print(f"가장 큰 숫자는 {x}입니다.")
  • 각 조건문에서 "같다(=)"의 경우까지 모두 고려하고 있기 때문에, 세 수 중 가장 큰 값 출력 가능
    • 예를 들어, 두 수 이상이 같고 그 값이 최대여도, 해당 조건에 맞는 블록이 실행되어 올바른 결과를 출력

x를 미리 선언하지 않아도 정상적으로 출력되는 이유:
파이썬에서는 변수를 사용할 때 반드시 미리 선언할 필요가 없습니다.
조건문(if, elif, else) 중 반드시 하나는 실행되므로,
x 변수는 무조건 할당됩니다.
따라서, print(f"가장 큰 숫자는 {x}입니다.")에서 x가 정의되지 않은 오류가 발생하지 않습니다.
즉, 입력된 세 숫자에 대해 항상 하나의 조건문이 참이 되어 x가 할당되고,
그 이후에 출력문이 실행되므로 논리적 오류나 변수 미정의 오류가 없습니다.

  1. 중첩 if 문 활용 (점수 평가): 학생의 점수를 입력받아 학점을 출력하는 프로그램을 작성하세요.
    점수가 90점 이상이면 "A 학점"
    80점 이상 90점 미만이면 "B 학점"
    70점 이상 80점 미만이면 "C 학점"
    60점 이상 70점 미만이면 "D 학점"
    60점 미만이면 "F 학점"
    단, 점수가 95점 이상이면 "A+ 학점"을 출력하도록 중첩 if문을 사용하세요.

    【입력 예시】
    점수를 입력하세요: 97
    【출력 예시】
    A+ 학점

score = float(input("점수를 입력하세요:"))
if score >= 90:
    if score >= 95:
        print("A+ 학점")
    else:
        print("A 학점")
elif score >= 80:
    print("B 학점")
elif score >= 70:
    print("C 학점")
elif score >= 60:
    print("D 학점")
else:
    print("F 학점")
score = float(input("점수를 입력하세요: "))
print("A+ 학점" if score >= 95 else "A 학점" if score >= 90 else "B 학점" if score >= 80 else "C 학점" if score >= 70 else "D 학점" if score >= 60 else "F 학점")
# python 3.10v 이상만 가능
def score_match_case(x):
    match x:
        case score if score >= 95:
            return "A+ 학점"
        case score if score >= 90:
            return "A 학점"
        case score if score >= 80:
            return "B 학점"
        case score if score >= 70:
            return "C 학점"
        case score if score >= 60:
            return "D 학점"
        case _:
            return "F 학점"

print(score_match_case(97))

→ switch-case(match-case) 파이썬 버전
→ 패턴 매칭 기능: 주어진 데이터 구조를 특정 패턴과 비교하여 일치 여부를 확인하는 기법. 프로그래밍, 이미지 처리, 데이터 분석 등 다양한 분야에서 활용

  1. 중첩 for 문 (구구단 출력): 2단부터 9단까지의 구구단을 출력하는 프로그램을 작성하세요.

    【출력 예시】
    2 x 1 = 2
    2 x 2 = 4
    ...
    9 x 9 = 81

for i in range(2, 10):
    for j in range(1, 10):
        print(f"{i} x {j} = {i*j}")
  1. 중첩 for 문 (별 찍기 - 계단형): 사용자로부터 정수를 입력받아, 해당 숫자만큼의 높이를 가진 계단형 별(*)을 출력하는 프로그램을 작성하세요.

    【입력 예시】
    높이를 입력하세요: 5
    【출력 예시】
    *
    **
    ***
    ****
    *****

n = int(input("높이를 입력하세요:"))
for i in range(1, n+1):
    for j in range(i):
        print('*', end='')
    print()
num = int(input("높이를 입력하세요:"))

for i in range(1, num+1):
    print('*'*i)
len = 5
for i in range(0, len+1):
    for j in range(i):
        print("*", end="")
    if i > 0:
        print()
  1. 중첩 for 문 (역순 계단형 별 출력): 사용자로부터 정수를 입력받아, 해당 숫자만큼의 높이를 가진 역순 계단형 별(*)을 출력하는 프로그램을 작성하세요.

    【입력 예시】
    높이를 입력하세요: 4
    【출력 예시】
    ****
    ***
    **
    *

n = int(input("높이를 입력하세요:"))
for i in range(n, 0, -1):
    for j in range(i):
        print('*', end='')
    print()
num = int(input("높이를 입력하세요:"))

for i in range(num, 0, -1):
    print('*'*i)
  1. 중첩 반복문 (배수 출력하기): 사용자로부터 두 개의 정수를 입력받아 첫 번째 숫자부터 두 번째 숫자까지의 범위에서 3의 배수와 5의 배수를 출력하는 프로그램을 작성하세요.

    【입력 예시】
    첫 번째 숫자를 입력하세요: 10
    두 번째 숫자를 입력하세요: 30
    【출력 예시】
    10 (5의 배수)
    12 (3의 배수)
    15 (3과 5의 배수)
    18 (3의 배수)
    20 (5의 배수)

    30 (3과 5의 배수)

num1 = int(input("첫 번째 숫자를 입력하세요:"))
num2 = int(input("두 번째 숫자를 입력하세요:"))
for i in range(num1, num2+1):
    if i % 3 == 0 and i % 5 == 0:
        print(f"{i} (3과 5의 배수)")
    elif i % 3 == 0:
        print(f"{i} (3의 배수)")
    elif i % 5 == 0:
        print(f"{i} (5의 배수)")
  1. 중첩 반복문 (좌표 출력하기): for 문을 이용해 (x, y) 형태의 좌표를 출력하는 프로그램을 작성하세요.
    (x값은 1부터 3까지, y값은 A부터 C까지)

    【출력 예시】
    (1, A)
    (1, B)
    (1, C)
    (2, A)
    (2, B)
    (2, C)
    (3, A)
    (3, B)
    (3, C)

# 풀이 1
X = [1, 2, 3]
Y = ['A', 'B', 'C']
for x in X:
    for y in Y:
        print(f"({x}, {y})")

# 풀이 2
for x in range(1, 4):
    for y in range(ord('A'), ord('C')+1):
        print(f"({x}, {chr(y)})")

추가: 여러 가지 별 찍기

중첩 for 문은 마치 2차원 배열을 탐색하는 것과 같이, 외부 for 문이 행을, 내부 for 문이 열을 나타냅니다. 각 반복마다 특정 조건에 따라 별을 출력하는 로직을 구현함으로써, 반복문의 동작 원리를 명확하게 이해할 수 있습니다.
별 찍기 문제를 통해 중첩 for 문이 어떻게 반복적으로 패턴을 생성하는지 직관적으로 이해할 수 있습니다. 예를 들어, 피라미드 형태의 별을 출력하는 경우, 외부 for 문은 피라미드의 높이를, 내부 for 문은 각 줄에 출력될 별의 개수를 조절하여 패턴을 만들어냅니다.
반복문, 조건문, 문자열 조작 등 기본적인 프로그래밍 개념을 적용하는 연습 → 반복문의 동작 원리를 이해하고, 이를 통해 패턴을 생성하며, 문제 해결 능력과 코딩 스킬을 향상

  1. 숫자만큼의 높이를 가진 계단형 별 출력(왼쪽 정렬)
# 방법 1
symbol = '*'
n = int(input("높이를 입력하세요:"))
for i in range(1, n+1):
	print(i*symbol)

# 방법 2
for i in range(int(input("높이를 입력하세요:"))):
	print('*'*(i+1))
  1. 숫자만큼의 높이를 가진 계단형 별 출력(오른쪽 정렬)
# 방법 1
space = ' '
symbol ='*'
n = int(input("높이를 입력하세요:"))
for i in range(n, 0, -1):
	print(space*(i-1) + symbol*(n-(i-1)))
    
# 방법 2
n = int(input("높이를 입력하세요:"))
for i in range(1, n+1):
	print(' '*(n-i)+'*'*i)
  1. 숫자만큼의 높이를 가진 역순 계단형 별 출력(왼쪽 정렬)
symbol = '*'
n = int(input("높이를 입력하세요:"))
for i in range(n, 0, -1):
	print(symbol*i)
  1. 숫자만큼의 높이를 가진 역순 계단형 별 출력(오른쪽 정렬)
# 방법 1
space = ' '
symbol ='*'
n = int(input("높이를 입력하세요:"))
for i in range(n):
	print(space*i + symbol*(n-i)))

# 방법 2
n = int(input("높이를 입력하세요:"))
for i in range(n, 0, -1):
	print(' '*(n-i) + '*'*i)
  1. 삼각형
# 방법 1
space = ' '
symbol ='*'
n = int(input("높이를 입력하세요:"))
cnt = 1

for i in range(n, 0, -1):
	print(space*(i-1) + symbol*cnt)
    cnt += 2

# 방법 2
n = int(input("높이를 입력하세요:"))
for i in range(1, n+1):
	print(' '*(n-i)+'*'*(i*2-1))
  1. 역삼각형
# 방법 1
n = int(input("높이를 입력하세요:"))
for i in range(n, 0, -1):
	print(' '*(n-i)+'*'*(i*2-1))

# 방법 2
n = int(input("높이를 입력하세요:"))
for i in range(1, n+1):
    print(' '*(i-1)+'*'*(2*(n-i)+1))

# 방법 3
n = int(input("높이를 입력하세요:"))
for i in range(n):
    print(' '*(i)+'*'*(2*(n-i)-1))
range 사용 방식공백 개수 계산별 개수 계산
range(n, 0, -1)n - ii*2 - 1
range(1, n+1)i - 12*(n-i) + 1
range(n)i2*(n-i) - 1
  1. 다이아몬드
n = int(input("숫자를 입력하세요:"))
for i in range(1, n+1):
	print(' '*(n-i)+'*'*(i*2-1))
for j in range(n-1, 0, -1):
	print(' '*(n-j)+'*'*(j*2-1))
  1. 리본
n = int(input("숫자를 입력하세요:"))
for i in range(1, n+1):
	print('*'*i+' '*(n*2-i*2)+'*'*i)
for j in range(n-1, 0, -1):
	print('*'*j+' '*(n*2-j*2)+'*'*j)
  1. 모래시계
n = int(input("숫자를 입력하세요:"))
for i in range(n, 0, -1):
	print(' '*(n-i)+'*'*(i*2-1))
for j in range(2, n+1):
	print(' '*(n-j)+'*'*(j*2-1))
n = 7  # 홀수만 사용 (예: 7) → 홀수여야 대칭이 맞음
for i in range(n):
    if i <= n // 2:
        # 위쪽 역삼각형
        print(' ' * i + '*' * (n - 2 * i))
    else:
        # 아래쪽 삼각형
        print(' ' * (n - i - 1) + '*' * (2 * (i - n // 2) + 1))

반복문 표 그리기

  • 반복문의 운행 상황을 인식
profile
2 B R 0 2 B

0개의 댓글