본문 바로가기

ABC 부트캠프

[4일차] ABC 부트캠프 - 파이썬 기초 #3 ( 제어문 & 연습 예제, 함수)

안녕하세오. 서루태에오.

오늘도 힘내서 달려보자구요!

 

강제 반복제어
break와 continue

continue를 만나면 현재 진행중인 for문 반복을 멈추고

다음 반복으로 강제로 넘어가요

for x in range(10):
    if x % 2 == 0: # 짝수이면 ~
        continue #다음 반복으로 넘어가세요
    print(x)

=> 1 3 5 7 9

 

break를 만나면 내가 속한 for,if 문을 종료시켜요

for x in range(1,10):
    if x % 2 == 0: # 짝수이면 ~
        break #for문을 끝낼게요
    print(x)

=> 1

 

while에 대해서도 알아볼까요?

num = 1
while (num < 10): #조건을 걸어줘요 num이 10보다 작으면~ 계속 반복
    print(num)
    num += 1
print(num)

=> 1 2 3 4 5 6 7 8 9 10

while문의 조건을 만족하지 않을 때까지 반복해요

다시 말해 num이 11이 되면 반복하지 않고

바로 print(num)으로 넘어가요

 

[ ]와 for, if의 활용

리스트를 만드는 [ ] 안에서 for와 if를 활용할 수도 있어요

예를 들어볼까요~?

list = [x for x in [1,2,3,4,5]] #1~5까지의 리스트 선언
sum = 0
for i in list: # 조건을 list로 걸어주세요
    sum += i
sum #1~5까지의 합

=> 15

이렇게 for 나 if의 조건을 list로 나타낼 수 있답니다

 

if, for, while의 활용은 매우매우 중요해요

제어문을 잘 다루는 연습은 꼭 해봐야 한다고 생각해요!

그래서 준비 했습니다


제어문 연습 예제

1. for문을 사용하여 리스트의 모든 요소를 출력하세요

fruits = ["apple", "banana", "cherry"]
i = 0
for i in fruits: # i라는 변수에 fruits의 인덱스를 순서대로 넣어줘요 ex) apple, banana, cherry 
    print(i, end=' ') # i를 출력합니다

=> apple banana cherry

 

2. while문을 사용해서 리스트의 모든 요소를 출력하세요

i = 0
while (i<3): # i가 3보다 작다면~ 실행 아니면~ break
    print(fruits[i], end=' ') # fruits[0]~[2]를 출력하고
    i += 1 # i를 하나 증가시켜요 그리고 다시 while문을 실행

=> apple banana cherry

 

3. for문을 사용하여 아래 조건에 부합하는 출력을 수행하세요

  • 1부터 30사이의 3의 배수 출력
m2 = []
for i in range(1,31): # 1부터 30까지 i에 넣어서 반복
    if i%3 == 0: 	  # i가 3의 배수라면~
        m2.append(i)  # 리스트에 i라는 '값'을 추가
print(m2) #최종 출력

=> [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

4. 주어진 리스트에서 값이 30이상인 값은 '우수'란 텍스트 값으로 변경하시오

scores = [10,35,20,38,13,18,27,45]

이전의 문제보다는 조금 어려워요

논리를 단계적으로 쪼개볼게요!

 

1. 30이상인 값을 찾자.

2. 그 값의 인덱스를 찾자.

3. 인덱스의 값을 '우수'로 수정하자.

4. 바꾼 리스트를 출력하자.

for i in scores: # 리스트의 값을 i에 넣어서 반복
    if i >=30:	 # i가 30보다 큰 값이라면~ 아래 실행
        scores[scores.index(i)] = '우수' 
        # scores.index(i)는 30보다 큰값의 인덱스, 그 인덱스의 값을 '우수'로 수정
print(scores)

=> [10, '우수', 20, '우수', 13, 18, 27, '우수']

5. 구구단 출력

  • 구구단 2단부터 9단까지 출력하기
#2단부터 9단까지 출력하기
for i in range(2,10): # i단을 출력
    print(f'-----{i}단-----')
    for j in range(1,10): # i단 안에서 1부터 10까지 곱하는 반복문
        print(f'{i} * {j} = {i*j}') 
        
-----2단-----
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
...

 

 

함수와 메서드

함수 Function

반복된 기능을 함수로 구현하여 반복된 코드를 줄일 수 있어요

반복된 코드를 쉽고 빠르게 쓸 수 있음 + 유지보수성이 뛰어나요

 

만약 2를 곱하는 함수를 만들었다고 할게요

 이 함수를 3을 곱하는 함수로 손쉽게 바꿔줄 수 있겠죠?

def mult_2(a):
	return 2*a

간단하게 2*a 를 3*a 로 바꿔주기만 하면 3을 곱하는 함수가 된답니다

def mult_3(a):
	return(3*a)

함수의 기본 틀은 다음과 같아요

# 함수의 정의
def add(a, b): #매개변수 a,b를 쓸거에요
    return a + b # 기능적인 부분

이때, 함수가 무조건 return값을 넘겨주는 건 아니에요

( print( )함수는 return이 없어요! )

 

함수의 매개변수와 전달

함수의 매개변수를 다양한 방법으로 정해줄 수 있어요

def sub(a, b):
    return a - b

## 위치에 의한 매개변수 전달
sub(10, 7)

## 이름에 의한 매개변수 전달
sub(b=7, a=10)

## 입력값의 개수가 미정일 경우
def sum(*nums):
    result = 0
    for x in nums:
        result += x
    return result

sum(1, 2, 3)

## 키워드 매개변수
def print_kwargs(**kwargs): # 딕셔너리 형태로 매개변수를 받음
    print(kwargs) 
print_kwargs(name='홍길동', age=30)

매개변수 전달은 위치를 맞춰줘도 되고, 이름을 맞춰줘도 돼요

매개변수를 여러개 넣고싶다면 매개면수 앞에 *를 붙여주세요

딕셔너리 형태로 매개변수를 쓴다면 앞에 **를 붙여주면 돼요

추가 설명

특별한 매개변수 형식들을 더 알아볼게요!

def standard_arg(arg): # 기본적인 매개변수 양식
    print(arg)

def pos_only_arg(arg, /): # /는 기능을 안하고 앞에있는 요소를 무조건 순서에 따라 적용해요
    print(arg)

def kwd_only_arg(*, arg): # *는 기능을 안하고 뒤에있는 요소를 무조건 키워드로 전달 해야해요 ex) arg=~
    print(arg)

def combined_example(pos_only, /, standard, *, kwd_only): # / 앞에는 순서 * 뒤에는 키워드만 가능
    print(pos_only, standard, kwd_only) # standard 부분은 제한없이 순서든 키워드든 모두 가능!

 

우리가 공식 문서를 볼때, 함수 설명에서 매개변수가 엄청 많은 경우가 허다해요

그럴때 위에있는 매개변수 공식만 따라가면 쉽게 해석 할 수 있답니다!

예시를 하나 보여줄게요

 

매개변수가 몇개야...

위처럼 pandas.read_csv()함수의 매개변수에서 두번째 변수인 *가 보이시나요?

우리가 * 뒤에 있는 매개변수는 "키워드"로 전달한다고 배웠어요

예를 들어 decimal이라는 매개변수를 기본값 ' . ' 에서 ' , ' 바꾸고 싶어요

그러면 read_csv("./data.csv" , decimal=' , ')

이렇게 써주시면 decimal이라는 키워드를 명시해서 매개변수를 사용할 수 있어요

 

문서가 길다고 겁먹지 마세요!!! 여러분도 할 수 있답니다!!!

 

오늘은 여기까지! 조금 힘드셨을까요?

다음 내용도 힘내서 빡코딩 해봅시다!!

모두 화이팅!