Python Basics Study(2017.04)¶
스터디 개요¶
- 기간 : 2017년 04월 04일 부터 약 10주+
- 스터디 리더 : 한영빈(소프16)
- 스터디 방식 : Tryhelloworld 파이썬 입문 코스 미리 공부해 와서 질의응답 방식으로 진행
- 온라인 코스 : 파이썬 입문(Tryhelloworld)
- 구성원 : 한영빈(소프16), 김희수(소프16), 한나라(정통16), 김규희(소프17), 장은애(소프17), 김문수(소프17), 박찬우(소프17)
- 스터디 모임 시각 : 화요일 오후 6시 30분 ~ 오후 8시 30분
- 모임 장소 : 스스스 랩실 또는 별도로 장소 대관
1회차 모임¶
- 2017.04.04
- 참석자 : 한영빈, 김희수, 한나라, 김규희, 장은애, 김문수, 박찬우.
- 진도 : 1장 - 파이썬 설치 + Hello World 출력해보기
2회차 모임¶
- 2017.04.11
- 참석자 : 한영빈, 김희수, 한나라, 김규희, 장은애, 박찬우.
- 결석 : 김문수(학생회)
- 진도 : 2~3장
질문 & 다룬 내용¶
- 소스코드에 영어가 아닌 문자가 있는 경우, 가장 첫 줄에
#-*-coding:utf-8-*-
를 넣어야 함 - 파이썬에서는 왜 변수를 선언할 때 키워드(혹은 예약어) 를 사용하지 않는가?
- 나라 : 파이썬의 장점?
- 전역변수와 지역변수 구분이나 스코프 구분은 어떻게 해야 할까?
- 파이썬에서 들려쓰기를 할 때 반드시 4칸씩 띄어쓰기 해야 하는가?
- 꼭 4칸씩 할 필요는 없지만, 들여쓰기 할때 일관적으로 해야 한다. 한칸씩 띄어쓰기 할거면 모두 한칸씩, Tab 으로 할꺼면 전부다 Tab 으로 해야 한다.
- 파이썬 여러 줄 주석 달기
""" 여러줄에 걸쳐서 주석 달기 """
3회차 모임¶
- 2017.04.18
- 참석자 : 한영빈, 김문수, 박찬우.
- 결석 : 한나라(병결), 김희수(병결), 김규희, 장은애.
- 진도 : 4~5장
질문 & 다룬 내용¶
input()
함수를 호출하여, 사용자로 부터 입력을 받을 수 있음.- 인자로 문자열을 넘겨줘서, 안내문을 출력하면서 입력받을 수 있음.(예제 :
input("안내문")
) - 사용자로부터 입력받을 것을 리턴함.
format()
함수를 이용하여, 문자열을 포맷팅 할 수 있음.
예제1
a='SSS' b='짱' print("{}{}".format(a,b))
SSS짱
string = "{}{}" print(string.format("SSS","짱"))
SSS짱
"""
) 시작하고 마치면 됨
string = """문자열 여러줄에 걸쳐서 넣어보기"""
4회차 모임¶
- 2017.05.02
- 참석자 : 김문수 , 김희수 , 장은애 , 한영빈
- 결석 : 김규희 , 박찬우 , 한나라
- 진도 : 6~9장
질문 & 다룬 내용¶
- list를 이해하고 사용할 수 있음.
- for in list와 for in range를 이해하고 사용하여 반복문을 만들 수 있음.
- module을 이해하고 사용할 수 있음.
-
직접 module을 만들고 사용할 수 있음.
-
가위바위보 예제 코드
import random def rsp(): return random.choice(["바위","가위","보"])
import rsp draw = 0 win = 0 lose = 0 for i in range(0,100000000): a = rsp.rsp() b = rsp.rsp() if a==b: print("비김") draw += 1 else: if a=="바위": if b=="가위": print("승리") win += 1 elif b=="보": print("패배") lose += 1 elif a=="가위": if b=="바위": print("패배") lose += 1 elif b=="보": print("승리") win += 1 elif a=="보": if b=="바위": print("승리") win += 1 elif b=="가위": print("패배") lose += 1 print("a는 총 {}번 승리하고 {}번 무승부하고 {}번 패배했습니다.".format(win,draw,lose))
5회차 모임¶
- 2017.05.16
- 참석자 : 한영빈, 박찬우, 한나라, 김희수, 김규희, 장은애.
- 결석 : 김문수(학생회)
- 진도 : 가위바위보 플레이어 코드
- 가위바위보 플레이어 코스 저장소
6회차¶
- 2017.05.30
- 참석자 : 한영빈, 한나라, 김희수, 박찬우, 김문수
- 결석 : 김규희(탈주)
, 장은애(탈주) - 진도 : 10강 - 딕셔너리와 튜플
- 10강 복습을 위한 간단한 코딩.
#-*-coding:utf-8-*- dict = { 201632034 : "한영빈", 201633036 : "한나라", 201632007 : "김희수", 201732004 : "김문수", 201732015 : "박찬우" } def getInfoById(dict, id): return (id, dict[id]) def getInfoByName(dict, name): for key, val in dict.items(): if val == name: return (key, name)
#-*-coding:utf-8-*- import dictex as members print(members.getInfoById(members.dict, 201632034)) print(members.getInfoByName(members.dict, "한영빈")) a, b = members.getInfoById(members.dict, 201632034) c, d = members.getInfoByName(members.dict, "한영빈") print("{}{}".format(a,b)) print("{}{}".format(c,d))
7회차¶
- 2017.06.08
- 참석자 : 한영빈, 김희수
- 결석 : 한나라(병결), 김규희(탈주)
, 장은애(탈주) - 진도 : 11~12강 - while 반복문과 예외처리(try~except)
- 학습한 내용을 이용하여 가위바위보 게임 만들기.
- 딕셔너리를 활용하여 승리여부 판단
- while 문 활용하여 게임 무한반복.(사용자가 중단 요청 시 까지.)
- 범위 밖의 값 입력 시 예외처리 하기
#-*-coding:utf-8-*- import random winConditions = {"가위":"보","바위":"가위","보":"바위"} selection = {1:"가위",2:"바위",3:"보"} print("가위,바위,보 게임") while True: player = input("가위(1), 바위(2), 보(3) 중 하나를 숫자로 선택하세요. 종료하려면, 0을 입력하세요.") if(player==0): exit() bot = random.choice(["가위","바위","보"]) try: if player not in [1,2,3]: raise ValueError except ValueError as e: print(e) print("올바른 값이 아닙니다.") continue if winConditions[selection[player]] is bot: print("이겼습니다.") elif selection[player] is bot: print("비겼습니다.") else: print("졌습니다.") print("나:{}, 상대방:{}".format(selection[player], bot))
8회차¶
- 2017.06.24
- 참석자 : 한영빈, 김희수, 한나라
진도 : 13~15 강- 플젝과 앞으로의 스터디 일정에 관한 토론
9회차¶
- 2017.06.29 목
- 참석자 : 한영빈, 김희수, 한나라
- 진도 : 13~16 강
- Java 와 달리 클래스에서 필드를 사전에 선언하지 않음. 사전에 선언하기 보단 생성자에서 선언과 동시에 초기화 함
- 오버라이드(재정의) 를 할 때 부모 클래스의 것을 오버라이드 한다는 표시(예: Java 의
@Override
, Kotlin 의override
등)가 따로 없음.
10회차¶
- 2017.07.02 일
- 참석자 : 한영빈, 김희수, 한나라
- 진도 : 17~18강
- 컴프리헨션(Comprehension) 을 이용해서 리스트나 딕셔너리에 값을 한 줄만으로 채워넣기가 가능함.
zip()
함수는 여러 리스트나 튜플을 묶어서 2차원 형태로 반환해 줌- 예 :
zip([1,2,3],['a','b','c'])
->[[1,2,3],['a','b','c']]
- 셋(Set) 컴프리헨션(예시) :
set1 = {i for i in range(1,10)}