티스토리 뷰

1. 조건문

주어진 조건의 참/거짓에 따라 코드를 실행

1-1. if문

# 기본형식
if 조건:
      실행할 코드

# 1
bool1 = True
if bool1:
        print('결과는 참입니다.')
print('프로그램을 종료합니다.')
 
# 2
age = int(input('나이를 입력하세요 : '))
if age > 19:
        print('성인입니다.')

print('입력한 나이 : ', age)

 

1-2. else문

# 기본형식
if 조건1:
     코드 블록1
elif 조건2:
     코드 블록2
else:
     코드 블록3
 
 # 1
age = int(input('나이를 입력하세요 : '))

if age > 19:
      print('성인입니다.')
else:
      print('미성년입니다.')

print('입력한 나이 :', age)

1-3 elif문

# 기본형식
if 조건1:
     코드 블록1
elif 조건2:
     코드 블록2
elif 조건3:
     코드 블록3
else:
     코드 블록4

 # 1
age = int(input('나이를 입력하세요 '))

if age > 19:
     print('성인입니다')
elif age > 14:
     print('청소년입니다')
elif age > 6:
     print('어린이입니다')
elif age > 0:
     print('유아입니다')
else:
     print('입력을 확인하세요')


# 문제 1
* 아래와 같은 로그인 프로그램을 만들어보자
* 아이디를 입력하세요: apple
* 비밀번호를 입력하세요: 1111
* 결과: '로그인 되었습니다' 또는 '아이디 또는 비밀번호를 확인하세요'라고 출력
* 단, 아이디가 admin, 비밀번호가 1234일 경우 로그인 성공
 
(풀이)
id = input('아이디를 입력하세요 : ')
pw = input('비밀번호를 입력하세요 : ')
if id == 'admin' and pw == '1234':
      print('로그인 되었습니다.')
else:
      print('아이디 또는 비밀번호를 확인하세요.')


# 문제 2
주민등록번호에 의한 성별을 판별하는 프로그램을 만들어보자
* 주민등록번호를 입력하세요 : 001011-3068518
* 결과 : '남자입니다' 또는 '여자입니다'라고 출력
* 단, 성별을 판별하는 숫자가 1,3,5,7,9는 남자, 2,4,6,8,0은 여자
 
(풀이)
a = input('주민등록번호를 입력하세요 (6자리-7자리) : ')
if int(a[7]) % 2 != 0:
     print('남자입니다.')
else:
     print('여자입니다.')
 
 
# 문제 3
* 국어, 영어, 수학점수를 입력받아 총점, 평균,학점을 구하는 프로그램을 작성해보자
* 단, 학점은 평균 기준으로 90점 이상은 A, 80점 이상은 B, 70점 이상은 C, 60점 이상은 D, 나머지는 F학점이라함
 
(풀이)
kor = int(input('국어 점수 : '))
eng = int(input('영어 점수 : '))
math = int(input('수학 점수 : '))
total = kor + eng + math
avg = total/3
print(f'평균 점수 : {avg}')

1-4. 조건부 표현식

if-else 구문을 간단하게 표현, 삼항연산자로고도 불림

num = int(input('숫자를 입력하세요 : '))

if num % 2 == 0:
          print('짝수')
else:
          print('홀수')
 
num = int(input('숫자를 입력하세요 : '))
print('짝수') if num % 2 == 0 else print('홀수')

 

2. 반복문

동일한 작업을 여러 번 실행 (주로 for문과 while문 사용)

 

2-1. while문

특정한 조건이 참인 동안 반복하다 거짓이 되면 멈춤 (주로 반복횟수를 모를 때 사용)

# 기본형식
i = 1
while i <=5:
  print('Hello Python')
  i += 1
  
# 1~10 까지 합
i = 1
sum = 0
while i <= 10:
  sum += i
  i += 1
print(f'1부터 10까지의 합 : {sum}')

# 1~100 까지 짝수의 합
i = 1
sum = 0
while i <= 100:
  if i%2 == 0:
    sum += i
  i += 1
print(f'1부터 100까지의 합 : {sum}')

# 원하는 구구단을 입력받아 해당 단의 구구단 출력
dan = int(input('원하는 단을 입력 : '))
print(f'{dan}단')

i = 1
while i <= 9:
  print(f'{dan} * {i} = {dan * i}')
  i += 1

 

2-2. for문

시퀀스 (리스트, 튜플, 문자열 등)의 각 항목에 대해 반복 작업을 수행 (주로 지정된 범위 내에서 반복할 때)

# 기본형식
list1 = [10, 20, 30, 40]

for li in list1:   # li에 차례대로 10 저장, 20 저장, 30 저장, 40 저장 후 멈춤
  print(li)

 

2-3. range() 함수

- 순차적인 정수의 시퀀스를 생성 (주로 for문과 함께 사용, 일정한 범위 내 반복 작업 시 유용)

- 실제 메모리에 저장되지 않고 필요할 때마다 생성

# 기본형식
range(시작값, 종료값, 단계)

num = range(1, 11, 1)
print(num)       # range(1, 11)

# 모두 같은 결과
for i in num:
  print(i, end=' ')
  
for i in range(1, 11, 1):
  print(i, end=' ')

for i in range(1, 11):    # 단계는 생략하면 기본값 1로 처리
  print(i, end=' ')
 
 for i in range(11):    # 시작값은 생략하면 기본값 0으로 처리
  print(i, end=' ')
  
# 1~100까지 홀수의 합
sum = 0
for i in range(1, 101, 2):
  sum += i
  print(i, end=' ')
print(f'\n1부터 100까지 홀수의 합 : {sum}')

 

2-4. enumerate() 함수

- 반복문을 사용할 때 인덱스와 값을 함께 가져옴

- for문과 함께 사용하며 반복문 내에서 순서를 추적할 때 유용

 
# 기본형식
enumerate(iterable, 시작값)   # 시작값 생략하면 기본값 0

# 1
li1 = [10, 20, 30, 40, 50]

for e in enumerate(li1, 0):
  print(e)      # 튜플로 (인덱스, 값) 반환
                # 반복이 되면서 몇 바퀴째를 돌고 있는지 인덱스가 궁금할 때
                
for e in enumerate(li1, 1):   # 인덱스 1부터 시작
  print(e)
  
# 2
# i, v = (0, 10)
for i, v in enumerate(li1):     # 분리되는 튜플의 특징
  print(f'인덱스:{i}, 값:{v}')

 

2-5. zip() 함수

- 여러 개의 반복 가능한 객체를 병렬적으로 묶어줌

- 하나의 요소씩 가져와 튜플로 묶어줌

- 주로 여러 개의 리스트나 튜플을 병렬적으로 처리하고저 할 때 사용

# 기본 형태
zip(iterable1, iterable2, ...)

# 1
li1 = [10, 20, 30]
li2 = ['apple', 'banana', 'orange']

for i in range(0, 3):       # 숫자 넣는 걸 선호하지 않음, 확장성이 없음
    print(li1[i], li2[i])   # 변수가 바뀌면 코드를 일일이 다 바꿔줘야 함

# 2
for i in range(len(li1)):   # 위의 코드보다는 낫지만 li2의 변동은 고려안됨
    print(li1[i], li2[i])

# 3
for l1, l2 in zip(li1, li2): # zip함수를 사용하면 병렬적으로 묶을 수 있음
    print(l1, l2)            # 길이가 짧은 쪽으로 반복
 

# 4
li1 = [10, 20, 30, 40]
li2 = ['apple', 'banana', 'orange']

for l1, l2 in zip(li1, li2): # zip함수를 사용하면 병렬적으로 묶을 수 있음
     print(l1, l2)          # 길이가 짧은 쪽으로 반복

for li in zip(li1, li2):
     print(li)              # 튜플로 반환
 
for n, A, a in zip('123456', 'ABCDE', 'abcde'):
     print(n, A, a)

 

3. 중첩 반복문

- 하나의 반복문 안에 다른 반복문이 포함된 구조

- 외부 반복문의 각 반복마다 내부 반복문이 모두 실행되는 방식

# 기본형식
for 외부변수 in 외부시퀀스:
  for 내부변수 in 내부시퀀스:
    내부 반복문 코드
  외부 반복문 코드

for i in range(1, 4):
  print(f'⚽️   i:{i}')
  for j in range(1, 4):
    print(f'🏀        j:{j}')
    
# 문제1
'🎱'을 이용하여 아래와 같은 모형을 만들어보자  
🎱 🎱 🎱 🎱 🎱  
🎱 🎱 🎱 🎱 🎱  
🎱 🎱 🎱 🎱 🎱  
🎱 🎱 🎱 🎱 🎱  
🎱 🎱 🎱 🎱 🎱

(방법1)
for i in range(5):
  for j in range(4):
    print('🎱', end= ' ')
  print('🎱')

(방법2)
for i in range(5):
  for j in range(5):
    print('🎱', end= ' ')
  print()

# 문제2
'🎱'을 이용하여 아래와 같은 모형을 만들어보자  
🎱 🎱 🎱 🎱 🎱  
🎱 🎱 🎱 🎱  
🎱 🎱 🎱  
🎱 🎱  
🎱

# 1반복 5개
# 2반복 4개
# 3반복 3개
# 4반복 2개
# 5반복 1개
for i in range(5):      # i 값이 늘 때마다 j 값은 줄어들도록
  for j in range(5-i):  # range(i, 5)도 가능
    print('🎱', end= ' ')
  print()


# 문제3
'🎱'을 이용하여 아래와 같은 모형을 만들어보자  
🎱   
🎱 🎱  
🎱 🎱 🎱  
🎱 🎱 🎱 🎱  
🎱 🎱 🎱 🎱 🎱

# 1반복 1개
# 2반복 2개
# 3반복 3개
# 4반복 4개
# 5반복 5개
for i in range(5):
  for j in range(i+1):      # i 값이 늘 때마다 j 값도 늘도록
    print('🎱', end= ' ')
  print()
  
# 문제4
2단부터 9단까지 구구단을 출력하는 프로그램 만들기  
* 단, for문과 while문을 사용하여 각각 별도로 작성

1) for문
for i in range(1, 10):
  for j in range(2, 10):
    print(f'{j} * {i} = {j*i}', end='\t')
  print()

2) while문
(방법1)
n = 1
dan = 2

while n <= 9:
  dan = 2
  while dan <= 9:
    print(f'{dan} * {n} = {dan*n}', end='\t')
    dan += 1
  print()
  n += 1
  
(방법2)
i = 2
j = 1

while i <= 9:
  print(f'{i}단')
  j = 1
  while j <= 9:
    print(f'{i} * {j} = {i*j}')
    j += 1
  i += 1
  print()

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함