서경대학교 파이썬 강의 4분반 2024년 1학기 수업 (강좌코드: EE1201-04, EN1004-04) 홈페이지입니다.
일시: 6월 20일 목요일 15:00 - 17:00
장소: 북악관 3층 프로그래밍 실습실 (강의실과 동일)
범위: 교과서 전범위 (11장 넘파이 제외)
문항수: 코딩 문제 5문항
문제유형: 교과서 연습문제에서 출제
기한: 6월 13일 목요일
평가방식: 제출 유무에 따른 Pass/Fail
내용: MyExcel.py 파일을 자유롭게 수정, 수정 의도 설명
프로젝트 수행 내용은 꼭 기능을 추가하지 않아도 주석을 바꾸거나, 주석을 삭제하거나,
코드를 길게 바꾸거나, 코드를 간략하게 바꾸거나, 코드를 삭제하거나,
이름을 바꾸거나, 함수를 통합하거나, 함수를 나누거나,
클래스를 변경하거나 하는 등 다양하게 하실 수 있습니다.
제출하시면 pass이기 때문에 작은 목표를 세워서 하시는 것을 추천드립니다.
11장 넘파이는 숙제 없습니다
일시: 4월 25일 목요일 15:00 - 16:30 (추가시간 최대 1시간)
장소: 북악관 3층 프로그래밍 실습실 (강의실과 동일)
범위: 6장 딕셔너리, 튜플, 집합까지
문항수: 객관식 10문항, 주관식 5문항, 코딩 5문항
문제유형: 객관식과 주관식 - 실행 결과 확인, 빈칸 채우기 코딩 - 교과서 내용을 응용해서 풀 수 있는 문제
내일 수업 정상진행하고, 수업 내용을 녹화해서 업로드하겠습니다.
이번 숙제는 4장 연습문제 1, 2, 24-27번과 5장 연습문제 17-23번 입니다. 소스 코드를 파일 또는 텍스트로 이메일로 보내주시면 감사하겠습니다.
비주얼 스튜디오에서 파이썬 한글 설정하는 방법을 알려주신 학우님께 감사의 말씀을 전합니다.
vb_setting_encoding.mp4
이번 숙제는 3장 연습문제 20번 - 25번입니다. 이메일 chaebinkim@skuniv.ac.kr 로 소스 코드를 파일 또는 텍스트로 보내주시면 실행해서 채점하겠습니다. 교과서가 없는 분은 3장 제어문.c를 파이썬 코드로 바꾸서 제출해주시면 됩니다.
수업 오픈채팅방이 개설되었습니다. 수업 공지를 여기서도 똑같이 전달할 예정이니 많은 참여 부탁드립니다.
참여 코드는 0314입니다.
https://open.kakao.com/o/gYu9jZfg
안녕하세요, 수업시간에 말씀을 다 드리지 못한 숙제 내용 공지드립니다.
숙제 내용은 실습문제 폴더의 2장 변수와 연산자.cpp에 있는 C/C++ 코드 중 LAB 2-1 ~ LAB 2-10을 파이썬 코드로 바꿔서 제출하는 것입니다.
제출기한은 다음주 수업시간 (3/21) 전까지입니다.
이메일 chaebinkim@skuniv.ac.kr 로 소스코드를 보내주시면 실행해서 채점하겠습니다.
에디터는 어떤 프로그램을 쓰셔도 무방합니다.
C/C++ 코드 중 마지막에 있는 심화학습은 숙제에서 제외입니다.
교과서를 선호하시는 분은 교과서 LAB 문제 2-1 ~ 2-10을 풀어서 제출하셔도 됩니다.
Warning
2장 변수와 연산자.cpp의 LAB2-6에서 문제는 result = result + num을 하고 result를 출력하는 것인데, c/c++ 코드에서는 num을 출력하는 것으로 되어있었습니다. result를 출력한 답안과 num을 출력한 답안 모두 정답처리하겠습니다.
"으뜸 파이썬", 박동규, 강영민 저, 생능 출판사, 2020
중간고사 | 기말고사 | 과제 | 출석 | 프로젝트 |
---|---|---|---|---|
30% | 30% | 20% | 10% | 10% |
중간고사는 객관식 10문항, 주관식 5문항, 코딩 문제 5문항으로 출제됩니다. 객관식 문제와 주관식 문제는 각 1점, 코딩 문제는 각 3점입니다. 기말고사는 코딩 문제 5문항, 각 6점으로 출제됩니다. 과제는 교과서 연습 문제 중 선정한 5 ~ 10 문제 입니다. 출석은 출결앱의 인증번호 방식으로 진행합니다. 프로젝트는 시범적으로 시행하기 때문에 Pass/Fail로 점수가 나갑니다. 프로젝트는 자유 형식이고, C로 작성된 예제 코드가 제공됩니다.
다음 파이썬 코드의 실행 결과를 보기에서 고르시오
x = 'a'
x, y = 0, 1
x ** y > ~x
- True 2) False 3) -1 4) 0 5) 1
정답: 1) True
다음 파이썬 코드의 결과가 5보다 작은 피보나치 수열이 되도록 주석으로 표시한 줄에 들어갈 알맞는 내용을 쓰시오
def fib(n):
a, b = 0, 1
while a < n:
print(a, end=' ')
# 코드를 입력할 줄
fib(5)
실행 결과: 0 1 1 2 3
코드: ____________
답안 예시: a, b = b, a + b
핸드폰 판매 대리점에 철수, 영희, 둘리, 마이콜, 희동이가 근무하고 있습니다. 판매에 성공할 때마다 다음과 같이 일지에 "날짜, 판매원 이름, 판매 금액" 형식의 문자열을 리스트로 기록해놓습니다.
# 일지 형식
input = ["2024-03-02, 철수, 10000", "2024-03-03, 영희, 10000"]
문제: 2024년 3월에 총 판매액이 많은 순서로 판매원 이름을 나열하여 출력하는 함수를 작성하시오.
# 출력 형식
output = ["철수", "영희", "둘리", "마이콜", "희동이"]
def phone_sales(input):
output = []
return output
채점은 여러 테스트 케이스들에 대해서 통과한 개수를 기준으로 합니다.
답안 예시
# 입력값: 판매장부 문자열 리스트
# 판매장부 문자열 형식: "연-월-일, 이름, 금액"
in_ = ["2024-03-02, 철수, 1000",
"2024-03-03, 영수, 10000",
"2024-03-03, 영희, 1000"]
# 출력값: 2024년 3월의 판매 금액이 높은 순서로 정렬된 이름 리스트
out_ = ["영수", "철수", "영희"]
# split 확인
print(in_[0].split(', '))
print(in_[0].split(', ')[0].split('-'))
# 실행 결과:
# ['2024-03-02', '철수', '1000']
# ['2024', '03', '02']
# 비교 연산자 확인
print(in_[0].split(', ')[0].split('-')[0] == '2024')
print(in_[0].split(', ')[0].split('-')[1] == '03')
# 실행 결과:
# True
# True
# 정수 변환 확인
print(0 + int(in_[0].split(', ')[0].split('-')[2]))
# 실행 결과:
# 2
# 판매자별로 (연, 월, 금액) 튜플 리스트 생성
sellers = {}
for sales_str in in_:
date, seller, sale = sales_str.split(', ')
sale = int(sale)
year, month, day = date.split('-')
# 판매 정보를 튜플로 패킹
sale_tuple = year, month, sale
print(seller, sale_tuple)
if seller not in sellers:
sellers[seller] = [sale_tuple]
else:
sellers[seller].append(sale_tuple)
print(sellers)
# 실행 결과:
# 철수 ('2024', '03', 1000)
# {'철수': [('2024', '03', 1000)]}
# 영수 ('2024', '03', 10000)
# {'철수': [('2024', '03', 1000)], '영수': [('2024', '03', 10000)]}
# 영희 ('2024', '03', 1000)
# {'철수': [('2024', '03', 1000)], '영수': [('2024', '03', 10000)], '영희': [('2024', '03', 1000)]}
# 판매 날짜를 2024년 3월로 필터링
target_year = '2024'
target_month = '03'
sellers_filtered = {}
print("\n"*5)
for seller in sellers:
target_sale_list = []
print("current seller:", seller)
for sale_tuple in sellers[seller]:
year, month, sale = sale_tuple
if year == target_year and month == target_month:
target_sale_list.append(sale_tuple)
print(" found target:", sale_tuple)
else:
print(" not target:", sale_tuple)
print(" ", year == target_year, month == target_month)
sellers_filtered[seller] = target_sale_list
print(' '*6,sellers_filtered)
# 실행 결과:
# current seller: 철수
# found target: ('2024', '03', 1000)
# {'철수': [('2024', '03', 1000)]}
# current seller: 영수
# found target: ('2024', '03', 10000)
# {'철수': [('2024', '03', 1000)], '영수': [('2024', '03', 10000)]}
# current seller: 영희
# found target: ('2024', '03', 1000)
# {'철수': [('2024', '03', 1000)], '영수': [('2024', '03', 10000)], '영희': [('2024', '03', 1000)]}
# 필터링 된 판매리스트에서 판매자별 총액 구하기
sellers_filtered_sales = {}
print("\n"*5)
for seller in sellers_filtered:
sales = 0
print("current seller:", seller)
for sale_tuple in sellers_filtered[seller]:
year, month, sale = sale_tuple
sales = sales + sale
print(" added", sale)
print(" current sales", sales)
sellers_filtered_sales[seller] = sales
print(' '*6, sellers_filtered_sales)
# 실행 결과:
# current seller: 철수
# added 1000
# current sales 1000
# {'철수': 1000}
# current seller: 영수
# added 10000
# current sales 10000
# {'철수': 1000, '영수': 10000}
# current seller: 영희
# added 1000
# current sales 1000
# {'철수': 1000, '영수': 10000, '영희': 1000}
# 판매자를 판매 금액순으로 정렬하기
sellers_sorted = []
print("\n"*5)
sales = list(sellers_filtered_sales.values())
sales.sort(reverse=True)
print(sales)
# 실행 결과:
# [10000, 1000, 1000]
# {판매 금액 : 판매자 리스트} 딕셔너리
sales_sellers = {}
for sale in set(sales):
print("looping: sale", sale)
sellers_list = []
for seller in sellers_filtered_sales:
if sellers_filtered_sales[seller] == sale:
sellers_list.append(seller)
print(" found seller", seller)
sales_sellers[sale] = sellers_list
print(" "*6, sales_sellers)
# 실행 결과:
# looping: sale 10000
# found seller 영수
# {10000: ['영수']}
# looping: sale 1000
# found seller 철수
# found seller 영희
# {10000: ['영수'], 1000: ['철수', '영희']}
# 판매자 리스트
for sale in sales:
sellers_sorted.append(sales_sellers[sale].pop(0))
print(sellers_sorted)
# 실행 결과:
# ['영수']
# ['영수', '철수']
# ['영수', '철수', '영희']
- 수업 방식 중 기본 개념 설명
- PPT에 처음 등장하는 모든 단어 및 내용을 설명하겠습니다.
- 수업 방식 및 시험 방식 결정
- 수업 방식은 PPT 강의 및 실습으로 하겠습니다.
- 평가 방식은 상기 서술된 내용과 같습니다.
- 학교에서 배우는 양, 기본 사용 방법 및 콘솔 결정
- 저자 유튜브 시청은 평가 방식에서 제외하겠습니다.
- 콘솔은 비쥬얼 스튜디오로 하겠습니다.
- C/C++과의 차이점 및 차별점
- 실습 문제 풀이에서 C, C++ 코드와 비교하겠습니다.
- 시험 문제를 교재 안에서만 출제
- 시험 문제에 교재 관련 페이지 숫자를 표기하겠습니다.
- 파이썬 기초, 기본 작동방식, 코딩 방법
- 파이썬을 교재 내용에 충실하게 기초부터 다루겠습니다.
- 파이썬의 기본 실행모드를 다루겠습니다.
- 파이썬 코딩 방법을 실습 시간에 설명하겠습니다.