[내배캠 AI코스] TIL

내일배움캠프 9일차 TIL - 파이썬 문법 기초(2)

띵제 2024. 2. 23. 20:52

오늘 들은 강의 : 파이썬 문법 기초 강의 

 

1-6. 조건문

 

1. if 문

 

실행 결과 : 택시를 타자

 

이건 if문의 기본적인 동작이다.

 

만약 money < 3800 으로 조건을 바꿔준다면 아예 아무것도 출력되지 않는다.

여기에 else를 더해주면 조건에 맞지 않을 때 어떻게 출력할지를 결정해줄 수 있다.

 

 

조건을 3800원보다 작다고 바꿔봤다. 일부러 조건에 맞지 않을 때 값을 출력하려고.

그럼 '응 택시 못타' 라고 잘 출력이 된다.

 

이때 중요한 건 들여쓰기다.

 

이렇게 줄을 안맞춰주면 결과값이 나오지 않는다. ‘응 택시 못타’ 만 출력되는 것.

두 문장 다 출력하고 싶다면 들여쓰기를 잘 해야한다.

 

요렇게 두 문장 출력 성공!

 

다양한 조건을 판단할 때는 elif를 활용한다.

 

가운데 elif를 통해 여러가지 조건을 생성해줄 수 있다.

 

 

1-7. 반복문

 

1. for 문

예를들어 0부터 9까지 모든 숫자를 출력하려고

일일이 print(0), print(1) 이렇게 쓴다면 불편할 것이다

그럴때는 반복문을 써준다.

 

과일을 예로 들어 반복문을 만들어보자.

 

이러면 알아서 결과값이 나온다.

 

Q. 사람의 나이 출력하기

 

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

 

이 데이터에서 사람의 이름과 나이만 출력해보자.

 

bob 20

carry 38

john 7

 

이런 식으로.

 

먼저 기본적인 반복문을 썼을 때 출력되는 값을 살펴보자.

 

0부터 9까지의 숫자가 차례대로 나열되듯이

각 리스트의 값이 나열되는 것을 확인할 수 있다.

 

그럼 이 출력값에서 이름과 나이만 추려내고 싶다면 어떻게 해야할까?

변수를 지정해줌으로써 해결할 수 있다.

 

여기에서 한가지만 더,

이 중 성인인 사람들의 데이터만 출력해보자.

이때는 조건문인 if 문을 써준다.

 

그리고 실행을 시켜보면,

 

에러가 뜨니, 꼭 들여쓰기를 해주자.

 

짠!

 

2. for ans - enumerate, break

 

먼저 enumerate 가 어떤 함수인지 살펴보자.

 

enumerate는 이런 식으로 적어주는데, 실행시켜보면

 

이렇게 값들에 순서가 매겨져 있는 것을 확인할 수 있다.

 

이제 break 함수를 써보자.

 

위 식에서 이렇게 추가를 해주면,

반복문을 돌다가 4번 이상이 되면 돌지는 말라고 막아주게 된다.

 

실행시켜보면,

 

5번까지만 출력이 된 것을 확인할 수 있다.

 

 

1-8. 반복문 - 연습문제

 

Q. 리스트에서 짝수만 출력하는 함수 만들기

 > 반복문을 돌아서 2로 나눴을 때 나머지가 0인 값들만 출력하면 짝수만 걸러낼 수 있다.

※ 들여쓰기 때문에 한참 헤맸다. 항상 예의주시하자!

※ == 가 같다, != 가 같지 않다.

 

Q. 리스트에서 짝수의 개수를 출력하기

count = count + 1 은

count +=1

이라고 더 간편하게 작성할 수 있다.

두번째 줄은 말 그대로 count 에 1 더하라는 뜻.

 

 

그런 다음 count를 print 해주면, 7 이라고 짝수의 갯수가 나온다.

 

Q. 리스트 안에 있는 모든 숫자 더하기

 

이건 바로 해설 영상으로 ㄱㄱ

 

sum 변수를 처음부터 0으로 깔아두고,

거기에다가 num 들을 하나씩 더해주면 총 합계가 나올 것이다.

 

와이라노..

 

들여쓰기, 들여쓰기, 들여쓰기…!!

이제 실행시키면 38 이 짠 하고 나온다. 

 

Q. 리스트 안에 있는 자연수 중 가장 큰 숫자 구하기

 

max 는 0이다.

만약 max < num , max 가 num 보다 작다면 

       max = num,  max 는 num 이 된다.

num_list의 모든 숫자는 0보다 크니까 처음부터 max는 첫번째 num (1)으로 바뀔 것이다.

그럼 두번째로 반복문을 돌 때, 1이 된 max 보다 두번째 num인 2가 더 크니까

또다시 2로 바뀌겠지. 이 과정을 반복하다보면 가장 큰 숫자인 6이 나올 거고,

그 이후에는 6보다 큰 숫자가 나오지 않으니 더이상 max 값은 바뀌지 않을 것이다.

 

..이런 생각을 어떠케 하는 거지..

 

 

1-9. 함수

 

1. 함수 사용 방법

쉽게 말해 코드에 이름을 붙여놓은 것이라고 보면 된다.

 

이렇게 hello()를 입력하면 ‘안녕!’이 나오도록 지정을 해준다면

그 뒤에 어디에서든 hello()를 입력하면 안녕! 이 나오는 것.

 

얘는 어디에 필요하냐,

조건문에서 조건마다 값을 다르게 넣어줄 때 사용하면 편하다.

 

위에서 sum(a,b)은 a+b라고 지정을 해주고

a, b 값에 1, 2를 넣어주면 결과가 3으로 나온다.

 

여기서 만약 한 가지를 더 추가한다면,

 

이렇게 return 위에다 print(추가하고 싶은 문구) 넣어주면 

 

이렇게 문구가 같이 나오게 된다.

 

아래의 예제도 함께 해보자.

 

def bus_rate(age):

if age > 65:

    print("무료로 이용하세요")

elif age > 20:

    print("성인입니다.")

else:

    print("청소년입니다")

 

bus_rate(27)

 

bus_rate() 안에 다양한 나이를 넣어보면,

위 로직에 따라 항상 다른 문구나 출력되는 것을 확인할 수 있다.

 

요렇게 return 구문을 써서 나이에 따라 다른 요금이 찍히게 할 수도 있다.

28살이라는 나이를 넣었보면, 1200원이 찍히는 것을 볼 수 있다.

 

Q. 주민등록번호를 입력받아 성별을 출력하는 함수 만들기

 

이렇게 임의로 넣어준 주민등록번호들의 성별을 파악해보자.

 

일단 머리를 써본다. 

주민등록번호 뒷자리의 첫번째 숫자가 짝, 홀인지 구분하면 성별이 나뉠것이다.

뒷자리 숫자만 빼오려면 ‘-‘을 기준으로 나눠주어야겠다.

그런데 저 주민번호들은 전부 숫자열이 아닌 문자열로 들어가있다.

그럼 문자열을 숫자열로 바꿔주어야겠다.

 

먼저 ‘-‘을 기준으로 나눈 다음, 

[1] ; 주민번호 앞자리가 0번째, 뒷자리가 1번째니까 둘 중 1번째를 가져오고,

[:1] ; 그 중에서 1번째 문자를 가져온다.

 

여기까지 하고 print(num)을 해보면 1, 2, 4 앞자리들만 출력되는 것이 확인된다.

 

이제 조건문을 넣어준다.

출력된 숫자들을 2로 나눴을 때 나머지가 0이면 짝수, 아니면 홀수일 것이다.

 

그런데 이렇게만 하고 실행해보면 바로 에러가 떠버린다.

이유는 위에서 말했듯이, 여기에서의 num은 숫자열이 아닌 문자열이기 때문.

저 num을 숫자열로 바꿔주기 위해서는 int()를 사용하면 된다.

 

요로케 감싸준 뒤에 실행을 시켜보면,

 

짜잔, 원하는 결과가 나온 것을 확인할 수 있다.

 

::오늘의 회고::

오늘은 파이썬 기초 강의 때 필기한 내용을 다시 보면서,

개인과제 문제를 뚫어져라 봤다.그냥 노려만 보고 있었다. 어디서부터 시작해야할지 감이 안 잡혀서.혼자서 필기한 내용이랑 과제를 보면서 끙끙대고 있었는데질문은 다음주에 하고 일단 최대한 궁리를 해보겠다는 심산이었다.근데 도무지 과제를 풀 실마리가 보이지 않았다.마치 영어를 배울 때 리스닝은 해도 스피킹은 못하는 그런 처지가 된 듯한 기분이었다.끙끙대기만 하고 배운게 없어서 TIL로 뭘 적어야할지 모르겠다.역시 질문이든 강의내용이든 하다못해 과제 푸는 과정이라도 어느정도는 뭘 알아야 말이 나오지 암것도 모르면 아무말도 안나온다.다행히 이번 주말엔 약속이 많지 않아서 과제를 뭐라도 실행해봐야겠다.