인사말

안녕하세요!

오늘은 아침부터 비가 보슬보슬 내려서 어두컴컴하네요

비 온 뒤, 기온도 떨어지고 급작스런 겨울이 시작될 거 같네요 🥲

모두 감기 조심하시고, 연말이니만큼 파이팅입니다!

 

오늘도 12시간 동안 공부한 내용을 포스팅해보겠습니다!

12시간이기 때문에 본문 내용이 아주 아주 깁니다!

 


요약

1. 제어문과 반복문

  1. 제어문이란?
  2. 반복문이란?
  3. 명령문과 반복문의 결합
  4. 프로그래밍에서의 중요성

2. Python 조건문

  1. If문 (True일 때)
  2. else문 (False일 때)
  3. elif문 (여러 개의 조건을 순차적으로 검사할 때)
  4. 중첩 구조문(조건문 안에 또 다른 조건문 사용)

3. Python 반복문

  1. for문 (리스트, 튜플, 문자열을 기반으로)
  2. while문 (조건문이 참인 동안 반복, 조건식이 거짓이면 종료)
  3. break문 (반복문 내에서 특정 조건이 만족되면 더 이상 반복할 필요가 없을 때 사용)
  4. continue문 (현재 반복을 건너뛰고, 다음 반복을 이어감)
  5. range() 함수 (특정 범위의 숫자 시퀀스를 생성)
  6. 중첩 반복문 (대표적 예시 : 구구단)

4. 들여 쓰기

5. 함수의 개념

6. 프로그래머스 문제 풀이


1. 제어문과 반복문

1.1 제어문이란?

  • 개념 : 프로그램의 실행 흐름을 제어하는 것
  • 특징
    1. 코드의 특정 부분을 조건에 따라 실행하거나, 실행하지 않게 할 수 있음
    2. 제어문은 프로그램을 더욱 유연하고, 다양한 상황에 대처할 수 있도록 만듦

 

1.2 반복문이란?

  • 개념 : 반복되는 작업을 자동화하는 것
    • 예시
      1. 리스트의 모든 요소를 출력 (age가 30개 이상일 때)
      2. 1부터 10까지의 합을 구할 때
    • 반복문이 없다면, 같은 코드를 여러 번 작성해야 하는 비효율적인 상황이 발생함
    • 사용처
      1. 데이터 처리 : 리스트나 배열의 모든 요소에 대해 동일한 작업을 수행할 때
      2. 자동화 작업 : 일정한 패턴의 작업을 반복해야 할 때. (100번의 반복 작업을 수행해야 하는 경우)
      3. 조건에 따른 반복 : 특정 조건이 만족될 때까지 작업을 반복하는 경우 (사용자가 올바른 값을 입력할 때까지 계속 입력을 요구하는 경우)

 

1.3 제어문과 반복문의 결합

  • 특징
    1. 더욱 복잡한 논리 흐름을 만들 수 있음
      • 반복문 앞에서 조건문을 사용하여 특정 조건을 만족할 때만 반복을 계속하거나, 반복을 중단할 수 있음
  • 사용처
    1. 조건부 반복 : 특정 조건이 만족될 때까지 반복을 실행
    2. 반복 중 조건 처리 : 반복 과정 중 조건을 체크하여 특정 작업을 수행하거나, 반복을 중단하는 기능을 추가.

 

1.4 프로그래밍에서의 중요성

  1. 유연성 : 제어문과 반복문을 사용하면 프로그램이 다양한 상황에 대처할 수 있음
  2. 코드 재사용 : 반복문을 통해 동일한 작업을 여러 번 반복할 수 있으므로, 코드의 길이를 줄이고 유지보수를 쉽게 할 수 있음
  3. 자동화 : 반복문을 활용하여 대량의 데이터 처리나 반복 작업을 자동화할 수 있음

2. Python 조건문

  • 개념 
    • 프로그램에서 주어진 조건에 따라 특정 코드 블록을 실행하거나 건너뛰는 기능을 함
    • 조건문을 통해 프로그램은 단순한 순차적 실행을 넘어서 결정을 할 수 있게 됨

2.1 If문

  • if 뒤에는 조건이 오고, 조건이 참(True)이면 해당 코드 블록이 실행됨.
if 조건식:
	실행할 코드
#If문
age = 20
if age > 19:
     print("성인입니다")
#결괏값 = 성인입니다

여기서 포인트가 되는 것은

하나의 코드를 입력 후 들여 쓰기를 해서 Print()를 하게 된다면

해당 코드에 관한 Print()가 됩니다!

들여 쓰기를 유용히 쓰면 될 거 같네요!

 

  • if문 예시
#If문 실습
## 사용자로부터 나이를 입력받아 성인인지 아닌지 판단하는 프로그램
age = int(input("나이를 입력하세요: "))

반드시 Int()를 입력하여야 문자열을 정수로 변환해 주기 때문에 꼭!! 입력하셔야 합니다!

 

  • 실습
#If문 실습
age = 20
if age >= 18:
     print("성인입니다")
#결괏값 = 성인입니다

 

2.2 else문

  • 개념 : else문은 if문의 조건이 거짓(False) 일 때 실행되는 코드 블록
  • else문 예시
if 조건식 :
 실행할 코드 (조건이 참일 때)
 else :
  실행할 코드 (조건이 거짓일 때)

 

  • 실습
#If + else문 실습
age = 17
if age >= 18:
     print("성인입니다")
else:
     print("미성년자입니다.")
#결괏값 = 미성년자입니다.

 

2.3 elif문

  • 특징
    1. 여러 개의 조건을 순차적으로 검사할 때 사용함
    2. if문 다음에 여러 개의 elif문을 사용하여 각 조건을 순서대로 검사함
    3. 처음으로 참인 조건이 발견되면 해당 코드 블록이 실행됨
  • 주의점
    • 큰 값이 위로 올라와야 하며 밑으로 내려갈수록 작은 값이어야 함!
  • elif문 예시
if 조건식1:
	실행할 코드1
elif 조건식2:
	실행할 코드2
elif 조건식3:
	실행할 코드3
else:
	실행할 코드4 (모든 조건이 거짓일 때)

 

  • 실습
#If + elif + else문 실습
age = 31
if age > 19:
    print("성인입니다.")
elif age > 30:
    print("확실한 성인입니다.")
else:
    print("미성년자입니다.")
#결괏값 = 성인입니다.

age가 31인데 결괏값이 "확실한 성인입니다."가 나오지 않았죠?

왜냐하면

elif문은 순차적으로 검사하기 때문에 그렇습니다.

 

그렇기 때문에 이렇게 수정해 준다면

#If + elif + else문 실습2 
age = 31
if age > 30:
    print("확실한 성인입니다.")
elif age > 19:
    print("성인입니다.")
else:
    print("미성년자입니다.")
#결괏값 = 확실한 성인입니다.

원하는 "확실한 성인입니다"가 도출됩니다!

 

2.4 중첩 구조문

  • 개념 : 조건문 안에 또 다른 조건문을 사용할 경우
  • 중첩 구조문 예시
#중첩 구조문
if 조건식1:
	if 조건식2:
    	실행할 코드1
    else:
    	실행할 코드2
else:
	실행할 코드3

 

  • 실습
#중첩 구조문1
age = 25
name = "배민경"

if age > 20:
    if name == "배민경":
        print("그래요, 저예요!")
#결괏값 = 그래요, 저예요!
#중첩 구조문2
age = 25
name = "김민경"

if age > 20:
    if name == "배민경":
        print("그래요, 저예요!")
    else:
        print("없어요")
#결괏값 = 없어요

중첩 구조문을 개념으로만 들었을 땐 짜증 났는데

직접 해보니까 재밌네요 😋

 

  • 중첩 구조문 심화 실습
#사용자로부터 나이와 학생 여부를 입력받아 상태를 출력하는 프로그램
age = int(input("나이를 입력하세요: "))
is_student = input("학생입니까? (yes/no): ")

if age >= 18:
	if is_student.lower() == "yes";
    	print("성인이며, 학생입니다.")
    else:
    	print("성인이며, 학생이 아닙니다.")
else:
	if is_student.lower() == "yes"
    	print("미성년자이며, 학생입니다.")
    else:
    	print("미성년자이며, 학생이 아닙니다.")

이 프로그램은 나이와 학생 여부에 따라 다양한 메시지를 출력하고, 소문자로 출력합니다.

 

  • 추가 개념
#and를 써서 똑같은 결괏값 도출하기
age = 25
name = "배민경"
if age > 20 and name == "배민경":
    print("그래요, 저예요!")
#결괏값 = 그래요, 저예요!

이렇게 and를 써서도 도출해 낼 수 있다는 것도 배웠습니다!


3. Python 반복문

  • 개념 : 프로그램 내에서 동일한 코드 블록을 여러 번 실행할 수 있도록 하는 구조
  • 특징
    1. 코드의 중복을 줄이고, 효율적인 프로그램을 작성할 수 있음
    2. 가장 기본적인 반복문은 for문과 while문임

 

3.1 for문

  • 개념 : 컬렉션(리스트, 튜플, 문자열)을 순차적으로 순회하여 코드 블록을 실행
#반복문
## for문 (컬렉션 기반)
for 변수 in 컬렉션:
	실행할 코드

 

  • for문 예시
#반복문
## for문 (컬렉션 기반)
list_sample = [2,4,6,8,10]

for element in list_sample:
    print(element)
#결괏값 = #2 4 6 8 10
## for문 (문자열)
list_sample_2 = "안녕"

for a in list_sample_2:
    print(a)
#결괏값 = 안 녕

그리고!

컬렉션 명 이름이 아니라 컬렉션 그 자체가 들어가도 결괏값이 도출됩니다!

또한 결괏값이 각각 낱개로 도출되더라구요

신기했습니다 🤨

 

  • for문 실습
## for문 (제곱 실습)
numbers = [5,6,7]

for number in numbers:
    square = number ** 2
    print(f"{number}의 제곱은 {square}입니다.")
#결괏값
5의 제곱은 25입니다.
6의 제곱은 36입니다.
7의 제곱은 49입니다.

 

3.2 while문

  • 개념 : 조건식이 인 동안 반복해서 코드 블록을 실행
  • 특징 : 조건식이 거짓이 되면 반복문이 종료됨.
## while문 (조건식이 참일 때 실행, 거짓이면 종료)
while 조건식:
	실행할 코드

 

  • while문 예시
## while문 (조건식이 참인 동안 실행됨, 거짓이 되면 종료됨)
age = 15

while age < 20:
    print("나이를 먹었습니다")

이 상태에서 실행을 한다면 무한 동력으로 실행된다고 하더라구요

이런 걸 활용할 때는 게임 서버를 운영할 때 쓰이는 구조라는 걸 배웠습니다!

 

하지만, 저희는 서버를 운영하는 것이 아니라

공부하기 위함이기 때문에 좀 더 붙여주었습니다.

## while문 (조건식이 참인 동안 실행됨, 거짓이 되면 종료됨)
age = 15

while age < 20:
    print("나이를 먹었습니다", age)
    age = age + 1
#결괏값
나이를 먹었습니다 15
나이를 먹었습니다 16
나이를 먹었습니다 17
나이를 먹었습니다 18
나이를 먹었습니다 19

언젠가 멈추어야 하기 때문에 거짓된 값을  만들어주어야 합니다!

재밌어요!

정말 코드를 자세히 쓸 때마다 결괏값이 달라진다는 게

너무 재밌습니다 😁

 

  • while문 실습
## while문 실습1
age = 15
while age <= 20:
    print(age)
    age += 1
15
16
17
18
19
20
## while문 실습2
age = 15
while age <= 20:
    age += 1
    print(age)
16
17
18
19
20
21

결괏값이 이렇게 두 가지로 나오게 되었습니다

이게 참이 되는 조건문이랑

조건문이 거짓이 되는 문장의

위치에 따라 결괏값이 달라지더라구요 

이 점을 주의해서 코드를 활용해야겠습니다!

 

  • 다르게 표현해 보기 (list)
## while을 다르게 표현해보기
start_position = 0
while start_position < len(list_sample):
    print(list_sample[start_position])
    start_position += 1
2
4
6
8
10

 

3.3 break문

  • 개념 : 반복문을 즉시 종료시킴
  • 특징 : 반복문 내에서 특정 조건이 만족되면 더 이상 반복할 필요가 없을 때 사용함

 

  • break문 예시
## break문 (반복문 자체를 멈추고 싶을 때)
a = 0

while a < 100:
    condition = int(input("10을 입력하면 출력이 안 돼요!"))
    if condition == 10:
        break
    a += 1
10을 입력하면 출력이 안 돼요!1
10을 입력하면 출력이 안 돼요!2
10을 입력하면 출력이 안 돼요!3
10을 입력하면 출력이 안 돼요!10
baeminkyung@baemingyeong-ui-MacBookAir Desktop %

break는 10을 입력하자마자 반복문이 끝나버렸습니다.

아예 반복문을 끝내고 싶을 때 반복문 밑에

break를 써주시면 됩니다!

  • for문에서도 사용 가능한 break
### for문에서도 사용 가능한 break
list_sample_3 = [1,2,3,4,5,6]

for i in list_sample_3:
    print(i)
    if i == 4:
        break
1
2
3
4

for문을 써도 적용이 가능하네요!

그냥 반복문 전체에서 사용 가능하기 때문에

여기저기 다 붙여 쓰시면 됩니다!

 

3.4 continue문

  • 개념 : 현재 반복을 건너뛰고, 다음 반복을 이어감
  • 특징 : 특정 조건에서 코드 블록의 일부를 실행하지 않고 다음 반복으로 넘어가고 싶을 때 사용

 

  • continue문 예시
## continue문 (특정 조건이 들어와도 다시 반복)
a = 0

while a < 100:
    condition = int(input("10을 입력하면 출력이 안 돼요!"))
    if condition == 10:
        continue
    print("hi")
    a += 1
10을 입력하면 출력이 안 돼요!10
10을 입력하면 출력이 안 돼요!10
10을 입력하면 출력이 안 돼요!2
hi
10을 입력하면 출력이 안 돼요!9
hi
10을 입력하면 출력이 안 돼요!10
10을 입력하면 출력이 안 돼요!

반면에 continue를 쓰게 되면 계속 반복문이 반복되는 걸 알 수 있습니다

break는 단어 그대로 끝! 내는 거고

continue도 단어 그대로 이어져 가는 거네요! 😉

 

3.5 range() 함수

  • 개념 : 특정 범위의 숫자 시퀀스를 생성함
  • 특징
    1. for문과 함께 자주 사용됨
    2. 반복 횟수를 지정할 때 유용함
# range() : 특정 범위의 숫자 시퀀스 생성
for i in range(시작, 종료, 단계):
	실행할 코드
  • 시작 : 시작할 숫자 (기본값 0).
  • 종료 : 종료할 숫자 (해당 숫자는 포함되지 않음).
  • 단계 : 숫자 간의 간격 (기본값 1).
  • range() 예시
# range()_1
for e in range(0,10,2):
    print(e)
2
4
6
8

이번 거는 range() 함수 안에 3개의 값 모두 서술한 경우이고,

# range()_2
for e in range(10):
    print(e)
0
1
2
3
4
5
6
7
8
9

이번 거는 range() 함수에 한 가지 값만 넣었더니

0부터 9까지 출력되었습니다!

한 가지 값만 넣으면 그 값이 "종료"값이 되네요! 😮

 

  • 몇 번째의 값인지 확인해 보는 코드
# range()_3
for e in range(len(list_sample_3)):
    print(list_sample_3[e])
    print(e,"번째")
1
0 번째
2
1 번째
3
2 번째
4
3 번째
5
4 번째
6
5 번째

list_sample_3에는 총 6개의 값이 들어가 있었음을 알 수 있네요!

재밌습니다 🤗

좀 더 보기 좋게 출력하려면

# range()_4
for e, f in enumerate(list_sample_3):
    print(e,f)
0 1
1 2
2 3
3 4
4 5
5 6

enumerate()를 써주시면 더 가독성이 좋아지게 도출됩니다!

 

3.6 중첩 반복문

  • 개념 : 반복분 안에 또 다른 반복문을 사용하는 것(=Nested Loop)
  • 특징
    1. 2차원 데이터 (예 : 행렬)를 처리할 때 씀
    2. 복잡한 반복 작업을 수행할 때 유용함
# 중첩 반복문
for i in range(첫 번째 범위):
	for j in range(두 번째 범위):
    	실행할 코드

 

  • 중첩 반복문 예시 (구구단)
# 중첩 반복문 (구구단)
for i in range(2,3):
    print(f"{i}단:")
    for j in range(1,10):
      print(f"{i} x {j} = {i*j}")
    print()
2단:
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18

오늘 한 것 중에 제일 재밌었던

결괏값이었습니다 🤣


4. 들여 쓰기

  • 개념 : 코드의 각 줄을 왼쪽에서 오른쪽으로 일정한 간격만큼 일어내는 것
  • 특징
    1. Python에서 들여 쓰기는 필수적
    2. Python은 들여 쓰기를 통해 코드 블록의 시작과 끝을 구분함
    3. 들여 쓰기가 잘못되면, Python 인터프리터가 코드의 구조를 이해하지 못하여 오류를 발생시킴
    4. 조건문, 반복문, 함수 등의 모든 구조적 코드에서 필수적으로 사용됨
    5. 들여쓰기가 오류가 생기면 indentationError라고 뜸
  • 규칙 
    1. 일관된 들여쓰기
    2. 공백 4칸이 표준
    3. 탭과 공백(띄어쓰기)의 혼용 금지
  • 들여쓰기 예시
#들여쓰기 예시

if True:
	print("이 코드는 실행됩니다.")
#결괏값 = 이 코드는 실행됩니다.

 

<조건문과 들여 쓰기>

# if문과 else문, elif문도 마찬가지

if 조건식:
    실행할 코드  # 조건이 참일 때 실행
else:
    실행할 코드  # 조건이 거짓일 때 실행

 

<반복문과 들여 쓰기>

# for문과 while문

for 변수 in 컬렉션:
    실행할 코드  # 반복할 코드 블록

while 조건식:
    실행할 코드  # 조건이 참인 동안 반복될 코드 블록

 

<함수 정의와 들여 쓰기>

# def 함수이름(매개변수)

def 함수이름(매개변수):
    실행할 코드  # 함수 본문

5. 함수의 개념

  • 개념 : 특정 작업을 수행하는 코드 블록을 정의하는 프로그래밍 구성 요소
  • 특징
    1. 함수는 각기 이름을 가지고 있고, 필요할 때마다 그 이름을 호출하여 코드 실행
    2. 함수는 입력값(매개변수)을 받아 처리하고, 결괏값을 반환할 수 있음
  • 함수의 사용처
    1. 반복되는 코드의 재사용
    2. 코드의 모듈화
      • 이때 모듈화란?
        • 프로그램을 여러 개의 작은 함수로 분할하여, 각 함수가 하나의 특정한 작업만 수행하도록 하는 것
    3. 복잡한 작업의 분할
  • 장점
    1. 코드 재사용성
    2. 가독성
    3. 유지보수 용이성
    4. 테스트 및 디버깅 용이성
  • 주의점
    1. 함수는 단일 작업을 수행하도록 설계해야 함
    2. 매개변수 수를 적절히 유지
    3. 함수 이름은 기능을 명확히 표현
    4. 부작용을 최소화

6. 프로그래머스 문제 풀이

처음에 못 풀었습니다 🙉

 

3번째 줄에서 멈추었는데요

\n을 입력하면 Enter 역할을 한다는 걸 배워서

3번째 줄에 \n을 입력하여 문제를 해결하였습니다 🙈

 

두 번째 문제는 무난히 풀었구요

 

마지막 문제 내용입니다

 

단순하게 생각해서 이렇게 입력하였더니

틀렸다고 해서

 

input()의 의미가 사용자가 입력하는 값을 넣겠다는 거니까

설마..? 하고

그냥 print(str) 입력하니까

 

정답이라고 떠서 해결하였습니다 👍🏻


마무리

오늘 정말 많이 공부한 거 같아요!!

정말 기네요! 😹

 

확실히 프로그래머에서 문제를 풀어봤기 때문에

저의 부족한 점과 이해 정도를 알게 됐어요!

프로그래머 해보라고 팀원분이 알려주셨는데

해보길 정말 잘했어요 🥰

 

개념을 공부한 것도 좋지만

문제를 먼저 켜보고 해결해 내는 게

저랑 맞는 공부법인 거 같아요!

덕분에 튜더 님이랑 다른 팀원분들과 소통을 많이 할 수 있어서

좋았습니다 🥰

 

내일도 문제 많이 풀어서 가져오겠습니다!

 

감사합니다~!

감기 조심하세요!

+ Recent posts