end=를 사용한 이유end=는 줄바꿈을 원하는 조건으로 대체하는 것
end= 미사용 시:

Q.
print("var1은", var1, "이 할당되었고", type(var1), "형식입니다.", sep = ' ', end = ' ') 입력했는데 sep 함수를 써도 괜찮나요?
A.
네, 괜찮습니다.
해답은 다양하고 여러 개 존재합니다.
동일한 결과가 도출되는 답을 많이 찾아보세요!
ctrl+alt+shift 누르고 아래 화살표 누르면 커서가 아래로 내려와 열 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 설명
%s, %d
input()
조건식 → 비교연산자/관계연산자
연산식의 결과 → True/False
x = 10
if x > 5:
print("x는 5보다 큽니다.")

x = 2
if x > 5:
print("x는 5보다 큽니다.")
else:
print("x는 5보다 작거나 같습니다.")
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 -> intprint(float("2.4")): str -> floatprint(int(2.4)): float -> intprint(int("2.4"))num = float(input("정수를 입력하세요:"))
if num == int(num):
if num > 0:
print("입력한 정수는 양수입니다.")
elif num == 0:
print("입력한 정수는 0입니다.")
else:
print("입력한 정수는 음수입니다.")
else:
print("입력한 수는 정수가 아닙니다.")
:: 조건식의 끝을 알리는 기호for 변수 in 반복 가능 객체:
종속 문장
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# 출력 결과:
# apple
# banana
# cherry
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
| i | print(i) | range() stop |
|---|---|---|
| 2 | 2 | F |
| 4 | 4 | F |
| 6 | 6 | F |
| 8 | 8 | F |
| 10 | T |
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)
조건이 참일 동안 반복
for 문과 비교


while 조건식:
종속 문장 1
x = 0
while x < 5:
print(x)
x += 1
# 출력 결과:
# 0
# 1
# 2
# 3
# 4

for i in range(10):
if i == 5:
break
print(i) # 0, 1, 2, 3, 4 출력
for i in range(5):
if i == 2:
continue
print(i) # 0, 1, 3, 4 출력
→ 2는 출력되지 않음!

while True:
command = input("명령을 입력하세요 (exit 입력 시 종료): ")
if command == "exit":
print("프로그램 종료")
break
print("입력한 명령:", command)
# 입력 예시
# 명령을 입력하세요 (exit 입력 시 종료): hello
# 입력한 명령: hello
# 명령을 입력하세요 (exit 입력 시 종료): exit
# 프로그램 종료
sum_i = 0
for i in range(1, 11):
sum_i += i
print(sum_i)
numbers = [1, 2, 3, 4, 5]의 요소를 하나씩 출력하는 코드를 작성하세요.numbers = [1, 2, 3, 4, 5]
for num in numbers:
print(num)
i = 1
while i < 11:
print(i)
i += 1
while True:
order = input("명령어를 입력해 주세요(exit 입력 시 종료):")
if order == "exit":
print("exit를 입력받아 종료합니다.")
break
print("입력된 명령어: ", order)
animals = ["dog", "cat", "elephant", "tiger"]animals = ["dog", "cat", "elephant", "tiger"]
for i in animals:
print(i)
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)
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("미성년자입니다.")
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}")

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()를 사용하여 다음 줄로 넘어갑니다.
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))))
age = int(input("나이를 입력하세요:"))
if age <= 12:
print("어린이")
elif age <= 18:
print("청소년")
else:
print("성인")
【입력 예시】
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}입니다.")
if num1 > num2와 if num1 > 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}입니다.")
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가 할당되고,
그 이후에 출력문이 실행되므로 논리적 오류나 변수 미정의 오류가 없습니다.
【입력 예시】
점수를 입력하세요: 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) 파이썬 버전
→ 패턴 매칭 기능: 주어진 데이터 구조를 특정 패턴과 비교하여 일치 여부를 확인하는 기법. 프로그래밍, 이미지 처리, 데이터 분석 등 다양한 분야에서 활용
【출력 예시】
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}")
【입력 예시】
높이를 입력하세요: 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()
【입력 예시】
높이를 입력하세요: 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)
【입력 예시】
첫 번째 숫자를 입력하세요: 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, 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
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
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)
symbol = '*'
n = int(input("높이를 입력하세요:"))
for i in range(n, 0, -1):
print(symbol*i)
# 방법 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
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
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 - i i*2 - 1 range(1, n+1) i - 1 2*(n-i) + 1 range(n) i 2*(n-i) - 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))
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)
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))
