[SECTION 04. 파이썬 기초 문법 - 리스트]
[] 안에 값을 넣어 만듭니다.fruits = ["사과", "배", "포도", "귤"]
print("첫 번째 과일:", fruits[0]) # 인덱스 0
print("마지막 과일:", fruits[-1]) # 음수 인덱스
print("리스트 길이:", len(fruits))
# 리스트 요소 변경
fruits[1] = "바나나"
print("변경 후:", fruits)
data = [10, 3.14, "Python", True, [1, 2, 3]]
print("정수:", data[0])
print("실수:", data[1])
print("문자열:", data[2])
print("불:", data[3])
print("리스트 안의 리스트:", data[4][1])
data = [10, 3.14, "Python", True, [1, 2, 3]]
for i in range(0, len(data)):
print(f"{i}번째 인덱스의 값: {data[i]} / 타입: {type(data[i])}")
for item in data:
print(item, type(item))
+), 곱셈(*) 연산을 지원합니다.a = [1, 2, 3]
b = [4, 5]
print("리스트 덧셈:", a + b) # [1,2,3,4,5]
print("리스트 곱셈:", b * 3) # [4,5,4,5,4,5]
print("길이:", len(a + b * 2))
nums = [10, 20, 30, 40, 50, 60]
print("앞 3개:", nums[:3]) # [10,20,30]
print("뒤 3개:", nums[-3:]) # [40,50,60]
print("인덱스가 짝수 번째:", nums[::2]) # [10,30,50]
print("역순:", nums[::-1]) # [60,50,40,30,20,10]
리스트[시작:끝:간격]
nums = [10, 20, 30, 40, 50, 60]
print(nums[:3]) # [10, 20, 30]
print(nums[2:5]) # [30, 40, 50]
print(nums[::2]) # [10, 30, 50]
print(nums[::-1]) # [60, 50, 40, 30, 20, 10]
[:] → 리스트 전체 복사[::2] → 2칸씩 건너뛰며 가져오기[::-1] → 리스트를 역순으로 뒤집기👉 즉, nums[::2] 는 짝수 번째 인덱스(0,2,4,...) 값들만 가져오는 표현이다.
# 0 1 2 3 4 5 6
nums = [10, 20, 30, 40, 50, 60]
# 끝까지 출력하는 방법
print(nums)
print(nums[:])
print(nums[0:len(nums)])
# 건너 뛰면서 가져오기
print(nums[::2])
# 역순으로 출력하기
print(nums[::-1])
append(x): 맨 뒤에 요소 추가insert(i, x): 원하는 위치에 요소 추가remove(x): 값 제거pop(): 마지막 요소 꺼내기sort(): 정렬reverse(): 역순nums = [3, 1, 4]
nums.append(5)
print("append:", nums)
nums.insert(1, 2)
print("insert:", nums)
nums.remove(4)
print("remove:", nums)
last = nums.pop()
print("pop:", last, nums)
nums = [3, 1, 3, 4]
# 추가 (마지막에 추가)
nums.append(5)
print("추가 후:", nums)
# 추가 (특정 위치에 추가)
nums.insert(0, 100)
print("특정 위치 추가 후:", nums)
# 제거 -> 매개변수로 들어가는 건 제거할 인덱스가 아니라 제거할 값
# 이 메소드는 인덱스 0에 가장 가까운 값 하나만 제거해 준다
nums.remove(3)
print("3 제거 후:", nums)
# 제일 마지막 요소 꺼내오기
last = nums.pop()
print("마지막 요소:", last)
scores = [88, 95, 70, 100, 99]
# 정렬 (오름차순)
scores.sort(reverse=False)
print("오름차순:", scores)
# 정렬 (내림차순)
scores.sort(reverse=True)
print("내림차순:", scores)
# 역순
scores.reverse()
print("역순으로 변환:", scores)
리스트 nums = [1, 2, 3, 4, 5]에서
append로 6을 추가하고remove로 3을 제거한 뒤준비 코드
nums = [1, 2, 3, 4, 5]
# 아래에 코드 작성
nums = [1, 2, 3, 4, 5]
nums.append(6)
nums.remove(3)
print("리스트:", nums)사용자에게 정수 5개를 입력 받아 리스트에 저장하고, 최댓값과 최솟값을 출력하세요. * max(), min() 함수를 이용할 것
nums = []
# 다섯 번 반복할 for문
for i in range(5):
num = int(input(f"{i + 1}번째 정수 입력:"))
nums.append(num)
print("입력받은 숫자:", nums)
print("최댓값:", max(nums))
print("최솟값:", min(nums))
nums = []
count = 0
# while문으로 다섯 번 반복
while count < 5:
num = int(input(f"{count + 1}번째 정수 입력:"))
nums.append(num)
count += 1
print("입력받은 숫자:", nums)
print("최댓값:", max(nums))
print("최솟값:", min(nums))
[SECTION 05. 파이썬 기초 문법 - 딕셔너리]
{} 안에 "키:값" 형태로 정의합니다.student = {
"name": "Alice",
"age": 21,
"major": "Computer Science"
}
print("이름:", student["name"])
print("나이:", student["age"])
print("전공:", student["major"])
# 새로운 키-값 추가
student["grade"] = "A"
print("추가 후:", student)
student = {
"name": "Alice",
"age": 21,
"major": "Computer Science"
}
print("변경 전 이름:", student["name"])
print("나이:", student["age"])
print("전공:", student["major"])
student["name"] = "ROONEY"
print("변경 후 이름:", student["name"])
print(student)
print("=== 키 추가 ===")
student["height"] = 177.7
print(student)
info = {
"id": 1001,
"name": "Kim",
"scores": [90, 85, 92],
"is_active": True
}
print("학생 ID:", info["id"])
print("학생 이름:", info["name"])
print("점수 목록:", info["scores"])
print("평균 점수:", sum(info["scores"]) / len(info["scores"]))
print("활성 상태:", info["is_active"])
print("정수:", type(info["id"]))
print("문자열:", type(info["name"]))
print("리스트:", type(info["scores"]))
print("불린:", type(info["is_active"]))
in : 키 존재 여부 확인del dict[key] : 항목 삭제len(dict) : 항목 개수 확인person = {"name": "Lee", "age": 30, "city": "Seoul"}
print("name 키 있나요?", "name" in person)
print("gender 키 있나요?", "gender" in person)
del person["city"]
print("삭제 후:", person)
print("길이:", len(person))
scores = {"Kim": 90, "Lee": 85, "Park": 92}
for key in scores:
print("이름:", key, "점수:", scores[key])
print("키 목록:", list(scores.keys()))
print("값 목록:", list(scores.values()))
print("키-값 쌍:", list(scores.items()))
get(key, default) : 키가 없으면 기본값 반환keys() : 모든 키 반환values() : 모든 값 반환items() : 모든 키-값 쌍 반환 (튜플 형태로 반환)update() : 다른 딕셔너리 병합user = {"id": "admin", "pw": "1234"}
print("아이디:", user.get("id"))
print("이메일:", user.get("email", "없음"))
user.update({"email": "admin@example.com", "pw": "0000"})
print("업데이트 후:", user)
product = {"name": "노트북", "price": 1200000, "brand": "Samsung"}
print("모든 키:", product.keys())
print("모든 값:", product.values())
print("키-값 쌍:", product.items())
for k, v in product.items():
print(f"{k} → {v}")
# 상품별 판매량 (딕셔너리)
sales = {"노트북": 120, "마우스": 55, "키보드": 78, "모니터": 33}
# (키, 값) 쌍을 리스트로 변환
sales_list = list(sales.items()) # 튜플로 변환됨
print(sales_list)
# [('노트북', 120), ('마우스', 55), ('키보드', 78), ('모니터', 33)]
# 판매량 기준 내림차순 정렬
top_sales = sorted(sales_list, key=lambda x: x[1], reverse=True)
print("판매량 순위:", top_sales)
# [('노트북', 120), ('키보드', 78), ('마우스', 55), ('모니터', 33)]
sorted() 함수 정리sorted(iterable, key=None, reverse=False) # 정렬할 객체, 기준 키, 역순 여부numbers = [3, 1, 4, 2]
print(sorted(numbers))
# [1, 2, 3, 4] (오름차순)
print(sorted(numbers, reverse=True))
# [4, 3, 2, 1] (내림차순)sales_list = [("노트북", 120), ("마우스", 55), ("키보드", 78)]
# 제품명(x[0]) 기준 정렬
print(sorted(sales_list, key=lambda x: x[0]))
# [('노트북', 120), ('마우스', 55), ('키보드', 78)]
# 판매량(x[1]) 기준 정렬 (내림차순)
print(sorted(sales_list, key=lambda x: x[1], reverse=True))
# [('노트북', 120), ('키보드', 78), ('마우스', 55)]# 학생 점수 데이터 (딕셔너리)
scores = {"kim": 85, "lee": 90, "park": 78, "choi": 95}
# (이름, 점수) 리스트로 변환
scores_list = list(scores.items())
# 90점 이상 학생만 필터링
passed = []
for name, score in scores_list:
if score >= 90:
passed.append((name, score))
print("합격자 명단:", passed)
# [('lee', 90), ('choi', 95)]
딕셔너리 student = {"name":"홍길동","age":20,"major":"CS"}에서
"age" 값을 1 증가시키고,"grade":"A" 키-값을 추가한 뒤,준비 코드
student = {"name": "홍길동", "age": 20, "major": "CS"}
# 아래에 코드 작성
: 정답
student = {"name":"홍길동","age":20,"major":"CS"}
if "age" in student:
student["age"] = student["age"] + 1
student["grade"] = "A"
print("최종 딕셔너리:", student)
사용자에게 학생 이름과 점수를 3명 입력받아 딕셔너리에 저장하고,
모든 학생의 평균 점수를 출력하세요.
준비 코드 및 출력 예시
scores = {}
# 아래에 코드 작성
# 입력 예시
학생 이름: 김수한
점수: 90
학생 이름: 한코딩
점수: 100
학생 이름: 루니
점수: 80
# 출력 예시
학생 점수: {'김수한': 90, '한코딩': 100, '루니': 80}
평균 점수: 90.0
#참고 예제
scores = {}
name1 = input("학생의 이름: ")
score1 = int(input("학생의 점수: "))
scores[name1] = score1
print(scores)
scores = {}
# 아래에 코드 작성
for i in range(3):
name = input(f"{i + 1}번째 학생 이름:")
score = int(input(f"{i + 1}번째 학생 점수:"))
scores[name] = score
print("학생 점수:", scores)
total = 0
for score in scores.values():
total += score
print("평균 점수:", total / 3.0)
print("=== 등록된 학생 명단 ===")
for name in scores.keys():
print(f"이름: {name}")
while True:
search_name = input("학생 이름 입력:")
if search_name in scores:
print(f"{search_name} 학생의 점수는 {scores[search_name]}점입니다.")
else:
print("해당 학생은 존재하지 않습니다.")
[SECTION 06. 파이썬 기초 문법 - 튜플과 세트]
() 안에 값을 넣어 정의합니다.fruits = ("사과", "배", "포도", "귤")
print("첫 번째 과일:", fruits[0])
print("마지막 과일:", fruits[-1])
print("길이:", len(fruits))
# 튜플은 변경 불가 → 아래 코드는 오류 발생
# fruits[1] = "바나나"
fruits = ("사과", "배", "포도", "귤")
# for문을 이용하여 출력
print("=== for문 ===")
for fruit in fruits:
print(fruit)
# 인덱싱 출력
print("=== 인덱싱 출력 ===")
print(fruits[0])
# 슬라이싱 출력
print("=== 슬라이싱 출력 ===")
print(fruits[0:2])
# 길이 출력
print("=== 길이 ===")
print("길이:", len(fruits))
person = ("Alice", 25, "Seoul")
name, age, city = person
print("이름:", name)
print("나이:", age)
print("사는 곳:", city)
# 값을 교환할 때도 활용
a, b = 10, 20
a, b = b, a
print("a:", a, "b:", b)
# 중간 변수를 사용할 경우
a = 10
b = 20
temp = a # a의 값은 b로 인해 대체되기 때문에 중간 변수에 보관해줘야 한다
a = b
b = temp
# a와 b의 값을 교환하는 코드 작성
print("a =", a)
print("b =", b)
count(x): 해당 값의 개수 반환index(x): 해당 값의 인덱스 반환nums = (1, 2, 3, 2, 4, 2)
print("2의 개수:", nums.count(2))
print("3의 위치:", nums.index(3))
data = (1, "Python", 3.14, True)
for item in data:
print("요소:", item, "→ 타입:", type(item))
print("총 개수:", len(data))
def min_max(numbers):
return min(numbers), max(numbers)
result = min_max([10, 3, 7, 5, 2])
print("최솟값:", result[0])
print("최댓값:", result[1])
low, high = min_max([4, 8, 1, 9])
print("low:", low, "high:", high)
point = (3, 5)
print("x 좌표:", point[0])
print("y 좌표:", point[1])
# 언패킹
x, y = point
print(f"좌표는 ({x}, {y}) 입니다.")
{} 또는 set()을 이용해 생성합니다.s = {1, 2, 3, 3, 4, 4, 5}
print("세트:", s) # 중복 제거됨
s.add(6)
print("추가 후:", s)
# 해당 인덱스를 추가하는 게 아니라 해당 값을 찾아가서 지운다.
s.remove(3)
print("삭제 후:", s)
text = "hello"
letters = set(text)
print("문자 집합:", letters)
print("길이:", len(letters))
letters.add("z")
print("추가 후:", letters)
| 또는 union()& 또는 intersection()- 또는 difference()a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
# 합집합
print("=== 합집합 ===")
print(a | b)
print(a.union(b))
# 교집합
print("=== 교집합 ===")
print(a & b)
print(a.intersection(b))
# 차집합
print("=== 차집합 ===")
print(a - b)
print(a.difference(b))
x = {10, 20, 30}
y = {30, 40, 50}
print("합집합:", x.union(y))
print("교집합:", x.intersection(y))
print("차집합:", x.difference(y))
add(x): 원소 추가remove(x): 원소 제거 (없으면 오류)discard(x): 원소 제거 (없어도 오류 없음)clear(): 비우기s = {1, 2, 3}
s.add(4)
print("add:", s)
s.remove(2)
print("remove:", s)
s.discard(10) # 오류 발생하지 않음
print("discard 후:", s)
numbers = {100, 200, 300}
print("초기 세트:", numbers)
numbers.clear()
print("clear 후:", numbers)
튜플 (10, 20, 30, 40, 50)에서
count와 index 메서드를 각각 사용해 보세요.준비 코드
t = (10, 20, 30, 40, 50)
# 아래에 코드 작성
: 정답
t = (10, 20, 30, 40, 50)
print("세 번째 요소:", t[2])
print("30의 갯수:", t.count(30))
print("40의 위치:", t.index(40))
반 A와 반 B의 학생들이 수강하는 과목을 각각 입력받아 세트로 저장한 뒤, 두 반 모두 수강하는 공통 과목(교집합)을 출력하시오
준비 코드
a_subjects = set()
b_subjects = set()
print("반 A 과목 3개 입력:")
# 아래에 코드 작성
: 정답
a_subjects = set()
b_subjects = set()
print("A반 수강 과목")
for i in range(3):
subject = input("수강 과목: ")
a_subjects.add(subject)
print("B반 수강 과목")
for i in range(3):
subject = input("수강 과목: ")
b_subjects.add(subject)
print("두 학급의 공통 수강 과목:", a_subjects.intersection(b_subjects))