내일배움캠프 9일차 TIL - 파이썬 문법 기초(2)
오늘 들은 강의 : 파이썬 문법 기초 강의
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로 뭘 적어야할지 모르겠다.역시 질문이든 강의내용이든 하다못해 과제 푸는 과정이라도 어느정도는 뭘 알아야 말이 나오지 암것도 모르면 아무말도 안나온다.다행히 이번 주말엔 약속이 많지 않아서 과제를 뭐라도 실행해봐야겠다.