파이썬 기본문법
학습 내용
print(), 변수, 문자열, 숫자 계산의 가장 기본 흐름 익히기- 문자열 인덱스와 슬라이싱, 리스트, 튜플, 딕셔너리,
for문처럼 데이터 분석 전에 꼭 알아야 하는 문법 익히기 if,elif,and,or로 조건을 나누는 방법 배우기return, 매개변수, 함수 호출을 통해 코드를 재사용하는 방법 익히기
파이썬은 문법이 비교적 읽기 쉬워서 처음 프로그래밍을 배우는 사람에게 잘 맞는 언어입니다.
- 데이터 분석, 자동화, 웹 개발, 인공지능처럼 다양한 분야에서 쓰입니다.
- 짧은 코드로도 바로 결과를 확인할 수 있어서 입문 단계에서 특히 배우기 좋습니다.
- 이 페이지는
설명 -> 짧은 예시 -> 기본 문제 -> 응용 문제흐름으로 구성했습니다.
처음 배우는 단계에서는 눈으로만 읽지 말고 꼭 직접 타이핑해 보세요. 손으로 한 번 쳐 본 문법이 훨씬 오래 남습니다.
또 문제 코드에 보이는 # 뒤의 문장은 설명 메모입니다. # 뒤 내용은 실행되지 않으니, 문제를 읽는 안내문이라고 생각하면 됩니다.
변수는 값을 이름으로 저장하는 칸입니다.
이 코드는 23이라는 값을 temperature라는 이름에 저장한 것입니다. 여기서 =는 “같다”가 아니라 “오른쪽 값을 왼쪽 이름에 넣는다”는 뜻입니다.
변수 이름에는 간단한 규칙이 있습니다.
- 보통 문자로 시작합니다.
- 이름 맨 앞에 숫자는 올 수 없습니다.
- 중간에 띄어쓰기는 사용할 수 없습니다.
- 대문자와 소문자는 다른 이름으로 취급합니다.
예를 들면 아래 이름은 사용할 수 있습니다.
아래처럼 쓰면 올바른 변수 이름이 아닙니다.
변수에 저장한 값은 print()로 확인합니다.
실행 결과:
변수는 나중에 다시 계산에 사용할 수도 있습니다.
실행 결과:
ticket_count = ticket_count + 2는 기존 ticket_count 값에 2를 더한 뒤, 그 결과를 다시 ticket_count에 저장한 것입니다. 처음에는 조금 낯설어 보여도 아주 자주 쓰는 형태입니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 1. 나이 저장하기 # 13살 학생의 나이를 저장하는 변수를 만들고 13을 출력하라. # 변수 이름은 student_age처럼 정해도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 2. 이름과 도시 출력하기 # 학생 이름과 사는 도시를 한 줄씩 차례대로 출력하라. name = "민지" city = "서울"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 3. 두 점수 합치기 # 두 과목 점수를 더해 총점을 출력하라. math = 40 english = 50
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 4. 총금액 계산하기 # 물건 가격과 구매 수량으로 총 결제 금액을 계산해 출력하라. price = 1200 count = 3
따옴표로 감싼 값은 문자열입니다. 문자열은 글자를 저장할 때 사용합니다.
문자열은 +로 이어 붙일 수 있습니다.
실행 결과:
문자열의 길이를 알고 싶을 때는 len()을 사용합니다. len(text)는 글자가 몇 개 들어 있는지 세어서 숫자로 알려 줍니다.
실행 결과:
문자열은 숫자와 다릅니다. "10"은 글자 두 개이고, 10은 숫자입니다. 지금 단계에서는 문자열을 “글자 묶음”이라고 이해하면 충분합니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 5. 인사말 만들기 # 인사말과 이름을 이어 붙여 한 문장을 출력하라. greeting = "안녕" name = "민지"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 6. 문자열 길이 구하기 # 문자열에 글자가 몇 개 들어 있는지 출력하라. text = "python"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 7. 날짜 문장 만들기 # 월과 일을 이어 붙여 날짜를 완성하라. month = "3월 " day = "22일"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 8. 응용: 제목 만들기 # 라이브러리 이름과 단계 이름을 이어 붙여 제목을 완성하라. library = "pandas" level = "입문"
문자열은 글자가 한 줄로 이어져 있는 자료입니다. 글자를 하나씩 꺼낼 때는 인덱스를 사용합니다.
실행 결과:
인덱스는 0부터 시작합니다. 그래서 첫 글자는 text[0], 두 번째 글자는 text[1]입니다. 마지막 글자를 꺼낼 때는 -1도 자주 사용합니다.
실행 결과:
문자열의 일부를 여러 글자 한 번에 자를 때는 슬라이싱을 사용합니다.
실행 결과:
word[1:4]는 1번부터 4번 “바로 앞”까지를 뜻합니다. 그래서 1번, 2번, 3번 글자만 포함됩니다. 시작 번호는 포함되고, 끝 번호는 포함되지 않는다는 점이 중요합니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 9. 첫 글자 출력하기 # 단어의 맨 앞 글자를 출력하라. text = "python"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 10. 마지막 글자 출력하기 # 단어의 맨 마지막 글자를 출력하라. text = "python"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 11. 가운데 두 글자 자르기 # 단어에서 가운데 두 글자만 잘라 출력하라. word = "data"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 12. 응용: 첫 글자와 마지막 글자 이어 붙이기 # 단어의 첫 글자와 마지막 글자를 이어 붙여 출력하라. word = "science"
숫자는 계산에 사용하는 값입니다. 파이썬에서는 +, -, *, /로 기본 계산을 할 수 있습니다.
실행 결과:
나누기 /는 결과가 딱 떨어져도 실수로 보이는 경우가 많습니다. 그래서 12 / 4는 3이 아니라 3.0으로 출력될 수 있습니다.
계산 순서를 분명히 하고 싶을 때는 괄호 ()를 사용합니다.
실행 결과:
변수에 숫자를 저장한 뒤 계산하면 더 읽기 쉬운 코드를 만들 수 있습니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 13. 괄호를 사용한 계산 # 8과 4를 먼저 더한 뒤 2로 나눈 결과를 출력하라. # 괄호를 사용해 먼저 더한다는 점이 보이게 작성하라. left = 8 right = 4 divisor = 2
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 14. 나누기 계산하기 # 9를 2로 나눈 결과를 출력하라. # 계산한 식은 print() 안에 바로 넣어도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 15. 직사각형 넓이 구하기 # 가로와 세로 길이로 직사각형 넓이를 계산하라. width = 4 height = 6
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 16. 응용: 시간을 분으로 바꾸기 # 1시간 30분을 총 몇 분으로 바꿔 출력하라. hours = 1 minutes = 30
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 17. 응용: 평균 구하기 # 세 과목 점수의 평균을 계산해 출력하라. korean = 90 english = 80 math = 70
나누기를 할 때는 결과를 두 가지 방식으로 자주 봅니다.
%는 나머지를 구합니다.//는 몫을 구합니다.
실행 결과:
17 % 5는 17을 5로 나눴을 때 남는 값이고, 17 // 5는 소수점 아래를 버린 몫입니다.
또 값을 조금씩 누적할 때는 +=를 많이 씁니다.
실행 결과:
money += 500은 money = money + 500과 같은 뜻입니다. 나중에 반복문에서 합계를 누적할 때 아주 자주 사용합니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 18. 나머지 구하기 # 10을 3으로 나눴을 때 남는 값을 출력하라. # 나머지는 % 기호를 사용해 계산하라.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 19. 몫 구하기 # 10을 3으로 나눴을 때 몫을 출력하라. # 몫은 // 기호를 사용해 계산하라.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 20. 응용: 초를 분과 초로 나누기 # 125초를 분과 초로 나눠 한 줄씩 출력하라. seconds = 125
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 21. 응용: +=로 값 누적하기 # total에 10과 5를 차례대로 더한 뒤 최종 결과를 출력하라. total = 0 first_add = 10 second_add = 5
파이썬은 값의 종류를 구분합니다. 이를 자료형 또는 타입이라고 합니다.
10같은 정수는int3.5같은 실수는float"hello"같은 글자는str
겉으로 비슷해 보여도 "10"은 문자열이고 10은 숫자입니다. 문자열과 숫자는 같은 방식으로 계산되지 않습니다.
실행 결과:
필요할 때는 값을 다른 자료형으로 바꿀 수 있습니다.
int()는 정수로 바꿉니다.float()는 실수로 바꿉니다.str()는 문자열로 바꿉니다.
실행 결과:
실수에 int()를 쓰면 소수점 아래가 잘립니다.
실행 결과:
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 22. 문자열끼리 더하기 # 두 개의 문자열 숫자를 이어 붙여 105가 되게 출력하라. left = "10" right = "5"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 23. 문자열 숫자를 정수로 바꾸기 # 문자열로 저장된 점수를 숫자로 바꾼 뒤 보너스 점수와 더하라. text_num = "10" bonus = 5
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 24. 문자열 실수를 float로 바꾸기 # 문자열 가격을 실수로 바꾼 뒤 배송비 0.5를 더해 출력하라. price = "12.5" shipping_fee = 0.5
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 25. 숫자를 문자열로 바꾸기 # 수량 숫자를 문자열로 바꿔 `사과 3개` 문장을 완성하라. count = 3 item_name = "사과"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 26. 실수를 정수로 바꾸기 # 실수로 저장된 값을 정수로 바꿔 출력하라. value = 4.8
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 27. 응용: 두 문자열 숫자 더하기 # 문자열로 들어 있는 두 점수를 숫자로 바꾼 뒤 합계를 출력하라. point = "80" bonus = "5"
비교 연산은 두 값을 비교해서 True 또는 False를 만듭니다.
True는 참False는 거짓
자주 쓰는 비교 연산은 아래와 같습니다.
>: 크다<: 작다==: 같다!=: 다르다>=: 크거나 같다<=: 작거나 같다
실행 결과:
조건을 두 개 이상 함께 확인할 때는 and, or를 사용합니다.
and: 둘 다 참이어야 참or: 둘 중 하나만 참이어도 참
실행 결과:
문자열 안에 특정 글자나 단어가 들어 있는지 확인할 때는 in을 사용합니다. "py" in "python"은 "python" 안에 "py"가 들어 있으므로 True가 됩니다. 검색창에 어떤 단어가 포함되었는지, 문장 안에 특정 문자열이 있는지 확인할 때 자주 사용합니다.
비교 연산의 결과는 조건문에서 아주 자주 사용됩니다. 지금 단계에서는 “이 식이 True인지 False인지” 읽어 내는 연습이 중요합니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 28. 큰지 비교하기 # 첫 번째 수가 두 번째 수보다 큰지 비교해 출력하라. x = 10 y = 3
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 29. 같은지 비교하기 # 입력된 비밀번호가 목표 문자열 `python`과 같은지 비교하라. password = "abc123" target_password = "python"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 30. 포함 여부 확인하기 # 단어 안에 `py`가 들어 있는지 확인하라. word = "python" target_piece = "py"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 31. 응용: 점수 범위 확인하기 # 점수가 60점 이상 100점 이하인 합격 범위 안에 들어가는지 `and`로 확인하라. score = 85
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 32. 응용: 할인 대상 확인하기 # 나이가 8세 미만 또는 65세 이상이면 할인 대상이 되도록 `or`로 확인하라. age = 70
조건문은 조건을 먼저 검사한 뒤, 그 결과에 따라 실행할 코드를 고르는 문법입니다.
가장 기본 형태는 if와 else입니다.
실행 결과:
이 코드에서는 먼저 balance >= 5000인지 확인합니다. 조건이 True이면 if 아래 코드가 실행되고, False이면 else 아래 코드가 실행됩니다.
꼭 기억해야 할 문법도 있습니다.
if줄 끝에는:를 붙입니다.else줄 끝에도:를 붙입니다.- 실행할 코드는 들여쓰기 4칸으로 안쪽에 넣습니다.
파이썬은 이 들여쓰기를 보고 어떤 코드가 조건문에 속하는지 판단합니다. 들여쓰기가 맞지 않으면 에러가 나거나 전혀 다른 뜻으로 읽힐 수 있습니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 33. 합격 여부 출력하기 # 시험 점수가 60점 이상이면 합격, 아니면 재도전을 출력하라. score = 75
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 34. 짝수인지 홀수인지 구분하기 # 숫자가 짝수인지 홀수인지 구분해 출력하라. number = 7
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 35. 날씨에 따라 다른 문장 출력하기 # weather가 `sunny`면 `산책`, 그 외에는 `우산 챙기기`를 출력하라. weather = "rain"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 36. 응용: 구매 가능 여부 출력하기 # 가진 돈과 가격을 비교해 구매 가능 여부를 출력하라. money = 12000 price = 9000
조건이 두 개보다 많아지면 elif를 사용합니다. elif는 “앞의 조건은 아니지만, 이 조건은 맞는가?”를 검사하는 줄입니다.
실행 결과:
이 코드는 위에서부터 차례대로 검사합니다. 먼저 temperature >= 30인지 보고, 아니라면 temperature >= 20인지 확인합니다. 두 조건이 모두 맞지 않으면 마지막 else가 실행됩니다.
중요한 점은 elif가 여러 개 있어도 처음으로 맞는 한 줄만 실행된다는 것입니다. 그래서 조건 순서가 매우 중요합니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 37. 학점 구하기 # 90점 이상은 A, 80점 이상 90점 미만은 B, 그보다 낮으면 C를 출력하라. score = 85
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 38. 시간대 구분하기 # 시간을 아침, 오후, 저녁으로 나눠 출력하라. hour = 9
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 39. 미세먼지 단계 구하기 # 수치를 세 단계로 나눠 미세먼지 상태를 출력하라. dust = 80
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 40. 응용: 배송비 구하기 # 주문 금액이 50000원 이상이면 0원, 20000원 이상이면 2500원, 그보다 적으면 3500원을 출력하라. total_price = 32000
리스트는 여러 값을 순서대로 담는 자료형입니다. 리스트의 역할은 관련 있는 값을 한 이름 아래 차례대로 모아 두는 것입니다. 장바구니 목록, 과목 점수 목록, 학생 이름 목록처럼 “같은 종류의 값이 여러 개” 있을 때 자주 사용합니다.
리스트도 문자열처럼 인덱스를 사용해 값을 꺼냅니다. 인덱스는 0부터 시작합니다.
실행 결과:
리스트에 값이 몇 개 들어 있는지는 len()으로 확인합니다.
실행 결과:
새 값을 맨 뒤에 추가할 때는 append()를 사용합니다.
실행 결과:
문자열은 한 글자씩, 리스트는 한 값씩 꺼낸다는 점에서 서로 비슷합니다. 그래서 문자열 인덱싱을 이해했다면 리스트도 훨씬 쉽게 익힐 수 있습니다.
리스트는 만들고 난 뒤에도 값을 추가하거나 바꿀 수 있습니다. 그래서 값이 자주 늘어나거나 줄어드는 데이터에 특히 잘 어울립니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 41. 첫 번째 과일 출력하기 # 과일 목록에서 맨 앞에 있는 과일 이름을 출력하라. fruits = ["사과", "바나나", "포도"]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 42. 마지막 값 출력하기 # 색상 목록에서 맨 마지막 값을 출력하라. colors = ["red", "blue", "green", "yellow"]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 43. 리스트 길이 구하기 # 색상 목록에 값이 몇 개 들어 있는지 출력하라. colors = ["red", "blue", "green", "yellow"]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 44. 값 추가한 뒤 마지막 값 출력하기 # 반려동물 목록에 값을 하나 추가한 뒤 마지막 값을 출력하라. pets = ["고양이", "강아지"]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 45. 리스트 안 숫자 더하기 # 숫자 목록에서 뒤의 두 값을 더해 출력하라. numbers = [10, 20, 30]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 46. 응용: 학생 수 늘어난 뒤 길이 구하기 # 학생 목록에 한 명을 추가한 뒤 전체 인원을 출력하라. students = ["민지", "준호"]
리스트의 중요한 특징 하나는 “만든 뒤에도 안의 값을 바꿀 수 있다”는 점입니다. 이런 자료형을 바뀔 수 있는 자료형이라고 생각하면 됩니다. 이 블록의 역할은 리스트에 값을 추가하고, 지우고, 바꾸는 방법을 익히는 것입니다.
이 기능은 할 일 목록에 새 항목을 넣을 때, 장바구니에서 상품을 뺄 때, 잘못 들어간 값을 다른 값으로 고칠 때처럼 아주 자주 사용합니다.
리스트 맨 뒤에 새 값을 넣을 때는 append()를 사용합니다.
실행 결과:
특정 위치의 값을 지울 때는 del을 사용합니다.
실행 결과:
위 코드에서는 2번 위치의 값 "수"가 지워졌습니다. 하나가 사라지면 뒤에 있던 값들이 앞으로 한 칸씩 당겨집니다.
리스트 안의 값을 다른 값으로 바꾸는 것도 가능합니다.
실행 결과:
이처럼 리스트는 순서를 유지하면서도 안의 값을 바꿀 수 있습니다. 그래서 값이 계속 변하는 데이터를 다룰 때 많이 사용합니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 47. append로 값 추가하기 # 음식 목록에 새 메뉴 `우동`을 추가한 뒤 마지막 값을 출력하라. foods = ["김밥", "라면"] new_food = "우동"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 48. del로 값 지우기 # 숫자 목록에서 두 번째 값을 지운 뒤 남은 목록을 출력하라. numbers = [10, 20, 30, 40]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 49. 리스트 값 바꾸기 # 과일 목록의 가운데 값을 `딸기`로 바꿔 출력하라. fruits = ["사과", "바나나", "포도"] new_fruit = "딸기"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 50. append 두 번 하고 길이 구하기 # 이름 목록에 `서연`과 `지우`를 더 추가한 뒤 전체 길이를 출력하라. names = ["민지", "준호"] first_new_name = "서연" second_new_name = "지우"
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 51. 마지막 값 지운 뒤 새 마지막 값 보기 # 마지막 색상을 지운 뒤 새로 마지막에 남은 색상을 출력하라. colors = ["red", "blue", "green", "yellow"]
리스트 슬라이싱의 역할은 리스트에서 필요한 부분만 잘라 새 리스트로 만드는 것입니다. 앞부분 몇 개만 보고 싶을 때, 뒷부분만 따로 쓰고 싶을 때, 순서를 뒤집고 싶을 때 자주 사용합니다.
리스트에서는 한 칸만 꺼내는 것뿐 아니라 여러 칸을 한 번에 잘라낼 수도 있습니다. 이 문법을 슬라이싱이라고 합니다.
실행 결과:
menu[1:3]은 1번부터 3번 바로 앞까지를 뜻합니다. 그래서 1번과 2번 값만 들어갑니다. 시작 번호는 포함되고, 끝 번호는 포함되지 않습니다.
처음부터 자를 때는 앞 번호를 비우고, 끝까지 자를 때는 뒤 번호를 비울 수 있습니다.
실행 결과:
순서를 뒤집고 싶을 때는 [::-1]을 사용할 수 있습니다. 원하는 순서대로 새 리스트를 직접 만들 수도 있습니다.
[::-1]에서 마지막 -1은 한 칸씩 거꾸로 이동하라는 뜻입니다. 그래서 처음부터 끝까지를 반대로 읽은 새 리스트가 만들어집니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 52. 앞부분 자르기 # 숫자 목록의 앞에서 두 값만 잘라 출력하라. numbers = [10, 20, 30, 40]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 53. 뒷부분 자르기 # 숫자 목록에서 세 번째 값부터 끝까지 잘라 출력하라. numbers = [10, 20, 30, 40]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 54. 가운데 두 값 자르기 # 과일 목록에서 가운데 두 과일만 잘라 출력하라. fruits = ["사과", "바나나", "포도", "수박"]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 55. 리스트를 거꾸로 뒤집기 # 과일 목록의 순서를 거꾸로 뒤집어 출력하라. fruits = ["사과", "바나나", "포도"]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 56. 응용: 순서 바꾸기 # 목록 순서를 c, a, b가 되도록 새 리스트를 만들어 출력하라. items = ["a", "b", "c"]
튜플은 리스트처럼 여러 값을 순서대로 담지만, 한 번 만든 뒤에는 안의 값을 바꾸지 않는 자료형입니다. 튜플의 역할은 “고정된 값 묶음”을 안전하게 보관하는 것입니다.
좌표 (x, y), 날짜 (연, 월, 일), 색상 (빨강, 초록, 파랑)처럼 한 번 정하면 자주 바꾸지 않는 데이터를 표현할 때 자주 사용합니다.
튜플은 보통 소괄호 ()로 만듭니다.
실행 결과:
튜플도 리스트처럼 인덱스를 사용할 수 있고 len()도 사용할 수 있습니다.
실행 결과:
튜플도 리스트처럼 슬라이싱할 수 있습니다. 필요한 앞부분만 자르거나 일부 구간만 꺼낼 때 사용합니다.
실행 결과:
튜플은 리스트와 달리 append()로 값을 추가하거나, point[0] = 10처럼 값을 바꾸는 방식으로 사용하지 않습니다. 그래서 “이 값들은 바뀌지 않아야 한다”는 뜻을 담고 싶을 때 튜플을 사용합니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 57. 튜플 첫 값 꺼내기 # 요일 튜플에서 첫 번째 요일을 출력하라. days = ("월", "화", "수")
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 58. 튜플 마지막 값 꺼내기 # 점수 튜플에서 마지막 점수를 출력하라. scores = (10, 20, 30)
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 59. 튜플 길이 구하기 # 좌표 튜플에 값이 몇 개 들어 있는지 출력하라. point = (5, 8)
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 60. 튜플 슬라이싱하기 # 계절 튜플의 앞부분 두 값만 잘라 출력하라. seasons = ("봄", "여름", "가을", "겨울")
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 61. 튜플 값 더하기 # 숫자 튜플의 첫 값과 마지막 값을 더해 출력하라. numbers = (15, 20, 25)
딕셔너리는 이름표와 값이 짝을 이루는 자료형입니다. 리스트가 순서로 값을 찾는다면, 딕셔너리는 이름으로 값을 찾습니다. 딕셔너리의 역할은 “각 값이 무엇을 뜻하는지 함께 저장하는 것”입니다.
예를 들어 학생 이름, 나이, 점수처럼 서로 의미가 다른 값을 한 묶음으로 보관할 때 아주 편리합니다. 데이터 분석에서는 한 사람의 정보, 상품 정보, 설정값처럼 “항목 이름이 있는 데이터”를 다룰 때 자주 사용합니다.
딕셔너리는 중괄호 {}로 만들고, 키: 값 형태로 적습니다.
실행 결과:
새 값을 추가하거나 기존 값을 바꿀 때는 딕셔너리["키"] = 값 형태를 사용합니다.
실행 결과:
여러 값을 한 번에 넣거나 바꿀 때는 update()를 사용할 수 있습니다.
실행 결과:
특정 항목을 지울 때는 del을 사용합니다.
실행 결과:
리스트는 0번, 1번처럼 위치로 값을 찾고, 딕셔너리는 "name", "age"처럼 이름으로 값을 찾는다는 차이를 꼭 기억하면 좋습니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 62. 딕셔너리 값 꺼내기 # 사람 정보 딕셔너리에서 이름 값을 꺼내 출력하라. person = {"name": "민지", "age": 10}
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 63. 새 key 추가하기 # 사람 정보에 도시 항목을 추가한 뒤 그 값을 출력하라. person = {"name": "민지", "age": 10}
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 64. 기존 값 바꾸기 # 사람 정보에서 나이를 새로운 값으로 바꿔 출력하라. person = {"name": "민지", "age": 10}
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 65. update()로 값 넣기 # `update()`로 과목 점수를 추가한 뒤 값을 출력하라. student = {"name": "준호"}
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 66. del로 key 지우기 # 책 정보에서 작성자를 지운 뒤 남은 항목 수를 출력하라. book = {"title": "파이썬", "author": "홍길동", "page": 200}
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 67. 응용: 딕셔너리 점수 합계 구하기 # 과목 점수 딕셔너리에서 세 과목 합계를 출력하라. scores = {"korean": 90, "english": 80, "math": 70}
keys(), values(), items()는 딕셔너리에 무엇이 들어 있는지 한 번에 확인할 때 사용하는 메소드입니다. 딕셔너리의 역할이 “이름표가 있는 데이터를 저장하는 것”이라면, 이 메소드들은 그 안에 들어 있는 이름표와 값들을 꺼내 보는 역할을 합니다.
keys()는 딕셔너리에 들어 있는 모든 키를 보여 줍니다. 어떤 항목 이름들이 들어 있는지 확인하고 싶을 때 사용합니다. 예를 들어 학생 정보에 name, age, city가 들어 있는지 확인할 때 사용할 수 있습니다.
values()는 딕셔너리에 들어 있는 모든 값을 보여 줍니다. 어떤 값들이 저장되어 있는지 한 번에 보고 싶을 때 사용합니다. 예를 들어 과목 점수만 모아서 확인할 때 자주 씁니다.
items()는 키와 값을 짝으로 묶어서 보여 줍니다. 어떤 이름표에 어떤 값이 연결되어 있는지 함께 확인하고 싶을 때 사용합니다. 나중에 반복문과 함께 쓰면 각 항목을 하나씩 꺼내 처리할 때도 많이 사용합니다.
처음 배우는 단계에서는 keys(), values(), items() 결과를 list()로 감싸서 보는 것이 이해하기 쉽습니다. 이렇게 하면 화면에 리스트 모양으로 보여서 안에 무엇이 들어 있는지 바로 확인할 수 있습니다.
실행 결과:
items()의 각 묶음은 튜플입니다. 그래서 ('title', 'inside')처럼 키와 값이 한 쌍으로 들어 있습니다. 이 결과를 list()로 바꾸면 리스트처럼 인덱스로 접근할 수도 있습니다.
실행 결과:
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 68. keys()로 key 목록 보기 # 사람 정보 딕셔너리의 key 목록을 출력하라. person = {"name": "민지", "age": 10}
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 69. values()로 값 목록 보기 # 점수 딕셔너리의 value 목록을 출력하라. scores = {"korean": 90, "english": 80, "math": 70}
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 70. items()로 key와 value 함께 보기 # key와 value를 짝으로 묶은 목록을 출력하라. person = {"name": "민지", "age": 10}
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 71. keys() 결과에서 두 번째 key 찾기 # key 목록으로 바꾼 뒤 두 번째 key 이름을 출력하라. scores = {"korean": 90, "math": 80, "english": 70}
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 72. items() 결과에서 첫 번째 묶음 보기 # `items()` 결과에서 첫 번째 key-value 묶음을 출력하라. book = {"title": "파이썬", "page": 200}
반복문은 같은 작업을 여러 번 반복할 때 사용합니다. 처음 배우는 단계에서는 for문을 가장 먼저 익히는 것이 좋습니다.
가장 단순한 형태는 리스트의 값을 하나씩 꺼내는 것입니다.
실행 결과:
반복 횟수가 정해져 있을 때는 range()를 사용할 수도 있습니다.
실행 결과:
range(2, 5)는 2부터 5까지가 아니라, 2부터 5 “바로 전”까지라는 뜻입니다. 그래서 2, 3, 4까지만 나옵니다.
for문 안에서도 if를 함께 사용할 수 있고, +=로 값을 누적할 수도 있습니다.
실행 결과:
반복할 코드는 반드시 들여쓰기 4칸으로 안쪽에 넣어야 합니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 73. 리스트 값 하나씩 출력하기 # 숫자 목록의 값을 하나씩 꺼내 한 줄씩 출력하라. numbers = [1, 2, 3]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 74. 1부터 3까지 출력하기 # `range()`를 사용해 1부터 3까지 한 줄씩 출력하라. # 반복 변수 이름은 i처럼 짧게 정해도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 75. 2배씩 출력하기 # 1부터 3까지의 수를 두 배로 계산해 한 줄씩 출력하라. # 반복 변수 이름은 n처럼 짧게 정해도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 76. 합계 누적하기 # 숫자 목록 전체를 더해 합계를 출력하라. numbers = [1, 2, 3, 4] total = 0
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 77. 짝수만 출력하기 # 숫자 목록에서 짝수만 골라 한 줄씩 출력하라. numbers = [1, 2, 3, 4, 5]
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 78. 응용: 문장을 반복해서 출력하기 # 과일 이름 뒤에 주문 문장을 붙여 한 줄씩 출력하라. fruits = ["사과", "바나나", "포도"]
함수는 여러 번 사용할 코드를 이름 붙여 묶어 둔 것입니다.
실행 결과:
함수를 만들 때는 def를 씁니다. 함수 이름 뒤에는 ()를 붙입니다. 함수 안에서 return을 쓰면 결과를 함수 바깥으로 돌려줄 수 있습니다.
함수는 만들기만 했다고 바로 실행되지 않습니다. 함수를 실제로 사용하려면 함수이름()처럼 호출해야 합니다.
여기서 꼭 기억할 점이 있습니다. 함수가 값을 return해도 화면에 자동으로 보이지는 않습니다. 화면에 보여 주고 싶다면 print(함수이름())처럼 다시 print()가 필요합니다.
함수 안에서만 사용하는 변수도 만들 수 있습니다.
실행 결과:
함수 안에서 만든 변수는 보통 함수 안에서만 사용한다고 생각하면 됩니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 79. 인사 함수 만들기 # 인사말을 돌려주는 함수를 만든 뒤 호출해 출력하라. # 함수 이름은 hello처럼 정해도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 80. 고정 숫자를 더하는 함수 만들기 # 함수 안에서 두 숫자를 만든 뒤 더한 결과를 출력하라. # 함수 이름은 add_fixed처럼, 함수 안의 변수 이름은 a와 b처럼 정해도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 81. 응용: 소개 문장 함수 만들기 # 소개 문장을 돌려주는 함수를 만들고 실행하라. # 함수 이름은 introduce처럼 정해도 된다.
함수는 바깥에서 값을 받아서 사용할 수도 있습니다. 함수 이름 뒤 괄호 안에 적는 이름을 매개변수라고 합니다.
실행 결과:
위 코드에서 price와 count는 함수 안에서만 사용하는 이름입니다. get_total(1200, 3)처럼 함수를 실행하면 1200이 price로 들어가고, 3이 count로 들어갑니다.
매개변수는 두 개 이상도 사용할 수 있습니다.
실행 결과:
함수 안에서는 바깥에서 받은 값과 함께 미리 정해 둔 고정값을 같이 사용할 수도 있습니다.
실행 결과:
함수 안에서 조건문을 사용하면, 입력값에 따라 다른 결과를 돌려줄 수도 있습니다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 82. 두 수를 더하는 함수 만들기 # 두 수를 받아 합계를 돌려주는 함수를 만들고 실행하라. # 함수 이름은 add처럼, 매개변수 이름은 a와 b처럼 정해도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 83. 두 문자열을 받는 함수 만들기 # 이름과 도시를 받아 한 문장으로 만드는 함수를 작성하라. # 함수 이름은 greet처럼, 매개변수 이름은 name과 city처럼 정해도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 84. 세 수를 곱하는 함수 만들기 # 숫자 세 개를 받아 곱한 결과를 돌려주는 함수를 작성하라. # 함수 이름은 multiply처럼, 매개변수 이름은 a, b, c처럼 정해도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 85. 문자열과 숫자를 함께 만드는 함수 # 이름과 점수를 받아 한 줄 문장으로 만드는 함수를 작성하라. # 함수 이름은 make_label처럼, 매개변수 이름은 name과 score처럼 정해도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 86. 고정 보너스를 더하는 함수 만들기 # 함수 안의 고정 보너스와 입력 점수를 더해 결과를 출력하라. # 함수 이름은 add_bonus처럼, 매개변수 이름은 score처럼 정해도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 87. 응용: 총금액 함수 만들기 # 가격과 수량을 받아 총금액을 계산하는 함수를 작성하라. # 함수 이름은 calculate_total처럼, 매개변수 이름은 price와 count처럼 정해도 된다.
에디터 로딩 중...
코드 입력 환경을 준비하고 있습니다.
# 문제 88. 응용: 조건문을 넣은 함수 만들기 # 점수를 받아 합격 또는 재도전을 돌려주는 함수를 작성하라. # 함수 이름은 get_pass_message처럼, 매개변수 이름은 score처럼 정해도 된다.