본문 바로가기

Python20

dict: 딕셔너리 합치기, 파이썬 3.9의 새 연산자 | 연산자 파이썬 3.9에서 새로 선보인 딕셔너리 연산자, 합사전? 합딕셔너리? 딕셔너리dict는 키key와 값value으로 구성된 늘어선 데이터입니다. 다른 늘어선 데이터들은 값들로만 구성되어 그 위치를 인덱스index로 가리키는데 반해, 딕셔너리는 이 인덱스가 아예 요소 자체에 포함된 형태입니다. 물론 부르는 용어는 인덱스가 아니라 키입니다. 딕셔너리에서 키와 값은 콜론(:)으로 구분되며, 키는 불변형 객체입니다. 따라서 정수나 문자열을 비롯해 부동소수점수나 불, 튜플이 키로 사용될 수 있습니다. 지난 딕셔너리의 연산자(feat. 딕셔너리 합치기)에서는 딕셔너리를 합칠 때 두 가지 방법을 소개했습니다. >>> da = {1: 11, 3: 33} >>> db = {2: 22, 4: 44} >>> {**.. 2020. 10. 26.
turtle: 파이썬의 그래픽 모듈, 4부 나는 지금 어디에 있나(feat. 각 잡고) pos() xcor(), ycor() heading() distance(), towards() degrees(), radians() turtle: 파이썬의 그래픽 모듈, 4부 나는 지금 어디에 있나(feat. 각 잡고) 4부에서는 터틀의 현재 위치를 알 수 있는 함수들을 살펴보겠습니다. position() | pos() 터틀의 현재 위치를 알려주는 함수가 pos()입니다. 현재 위치는 예전 수학 시간에 배운 대로 (x, y) 좌표 형식으로 표시됩니다. 파이썬에서는 이 형식이 튜플이라서 흔히 2-튜플이라고 부르기도 합니다. pos()가 하는 일이나 그 결과는 직관적이므로 여기서는 지난 3부 분신술에서 예로 들었던 turtle_stamp.py를 재료 삼아 pos()를 사용해 보겠습니다. 그때는 (-200, .. 2020. 10. 14.
turtle: 파이썬의 그래픽 모듈, 3부 분신술(feat. 잠깐만 기다려) stamp() clearstamp() clearstamps() clone() turtle: 파이썬의 그래픽 모듈, 3부 분신술(feat. 잠깐만 기다려) 이제부터는 지난 1부와 2부에서 살펴보지 않았던 터틀과 펜 관련 나머지 함수들을 정리하겠습니다. 우선 터틀의 분신술부터 들여다보겠습니다. stamp(), clearstamp(), clearstamps(), clone() 서유기의 손오공처럼 분신술을 부려 터틀을 복제하는 함수가 stamp()와 clone()입니다. 단, stamp()와 clone()은 여러 면에서 달라 주의해야 합니다. • stamp() 인자는 없으며, 현재 터틀의 상태 그대로 복제한 후 그 id를 내줍니다. 이름처럼 마치 무한 잉크로 터틀을 계속 찍어대는 것에 불과합니다. 따라서 복제된.. 2020. 10. 8.
turtle: 파이썬의 그래픽 모듈, 1부 터틀 움직이기(feat. 나 돌아갈래!) fd()/bk() goto()/setx()/sety()/home() rt()/lt()/seth() circle()/dot() undo()/setundobuffer()/undobufferentries() turtle: 파이썬의 그래픽 모듈, 1부 터틀 움직이기(feat. 나 돌아갈래!) 파이썬에 기본으로 제공되는 그래픽 라이브러리인 터틀turtle은 프로그래밍을 처음 배울 때 이런저런 실습용으로 많이 사용됩니다. 2차원 좌표로 표현되는 캔버스에서 ‘터틀’이라는 커서를 이리저리 옮기는 방식으로 애니메이션까지 구현할 수 있습니다. 여기서는 터틀에 제공되는 함수들 하나하나를 살펴보겠습니다. 단, 터틀 모듈을 이름 그대로 가져왔다는 전제에서 코드를 예로 들겠습니다. 첫 번째 순서는 터틀을 움직이는 가장 기본적인 .. 2020. 9. 27.
파이썬처음배우기: pre-VIII. 핸즈온, 2부 그래픽 모듈, 터틀 터틀 함수들 정사각형 회전하기 색 입히기 운영체제마다 다른 색 칠하기 pre-VIII. 핸즈온, 2부 그래픽 라이브러리, 터틀 파이썬에 기본으로 제공되는 그래픽 라이브러리인 터틀turtle은 프로그래밍을 처음 배울 때 이런저런 실습용으로 많이 사용됩니다. 터틀은 1940년대 말에 컴퓨터과학이나 기계공학 교육용으로 활용되던 로봇의 이름이었습니다. 거북 모양의 이 로봇은 회전 기능을 갖추고 있어서 센서를 부착하면 장애물을 피하도록 알고리즘을 구현할 수 있었죠. 터틀은 상업적으로도 큰 인기를 끌어 많은 사람들에게 로봇 실습용 프로젝트로도 널리 활용되었습니다. 1960년대 말, 로고Logo라는 프로그래밍 언어에서는 터틀 로봇용 그리기 함수들을 지원하기 시작했습니다. 작은 펜이 부착된 터틀 로봇이 프로그래밍에 따.. 2020. 9. 22.
파이썬처음배우기: VII. 함수 만들기, 6부 모듈(feat. 도움말) matrix_2.py realize(choice) matrix2_all.py mtrx.py matrix2_mo.py mtrx.py (final) 6부 모듈(feat. 도움말) 정의된 함수들을 같은 소스 코드에서만 사용할 수 있다면 그저 상식적인 차원에서 생각해 보더라도 이는 비효율의 극치입니다. 더구나 다른 사람이 그 함수들을 사용하기 위해서는 코드 자체를 ‘복붙’해야 할 텐데, 이 역시도 어불성설입니다. 어떤 해결 방법이 있을까요? 상식적인 차원에서 생각해 보자면, 함수들만 따로 솎아 내어 파일로 저장한 후, 메인 소스 코드에서 그 파일을 가리키게 하는 것이 좋을 듯합니다. 실제로 이 파일을 모듈module이라고 부르는데, 7장 함수 만들기 1부에서 작성한 matrix_2.py 파일로 예를 들어 보겠습.. 2020. 8. 28.
파이썬처음배우기: VII. 함수 만들기, 5부 인자의 세계(feat. 기본값) LEGB 위치 인자와 키워드 인자 SyntaxError 5부 인자의 세계(feat. 기본값) 함수 만들기 5부입니다. 5부에서는 지난 6장 7부(VI. 빠르게 또또또, 7부 369게임, 레벨 3(ft. escape sequence, f-string))에서 다뤘던 369 게임을 재료 삼아 인자를 깊게 파헤쳐볼까 합니다. 다음은 1에서 100까지 369 게임이 진행된 모습을 가지런하게 출력하는 마지막 버전의 코드입니다. # game369_lv3_neat.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 count_claps = 0 for i in range(1, 101): str_i = str(i) count_369 = 0 ending = '\t' for x in str_i: if (x == .. 2020. 8. 11.
파이썬처음배우기: VII. 함수 만들기, 4부 UnboundLocalError, revisited (feat. 네임스페이스) bind id() global nonlocal 4부 UnboundLocalError, revisited (feat. 네임스페이스) 4부에서는 UnboundLocalError라는 용어를 통해 영역scope을 더 깊게 들여다보겠습니다. 파이썬 공식 문서에서는 UnboundLocalError를 다음처럼 설명하고 있습니다. 영어판 Raised when a reference is made to a local variable in a function, but no value has been bound to that variable. 한국어판 함수에서 지역 변수를 참조하지만, 해당 변수에 값이 연결되지 않으면 발생합니다. 파이썬 공식 문서 한국어판의 설명은 엄밀히 말해 틀렸습니다. 원문의 시제를 무시한 문장인데다 무.. 2020. 7. 8.
파이썬처음배우기: VII. 함수 만들기, 3부 UnboundLocalError (feat. lexical scope) 영역의 원칙과 전제 lexical scope 3부 UnboundLocalError (feat. lexical scope) 흔히 우리는 넓은 공간을 작은 여러 공간으로 나누고 나뉜 공간마다 용도를 달리합니다. 더 작게 나눠 사용하는 방식은 물리적 공간에만 적용되는 것이 아닙니다. 논리적 공간도 나눔의 대상이죠. 디스크나 메모리가 단적인 예입니다. 그 엄청난 용량을 하나의 논리적 공간으로 사용할 수도 있지만 여러 개의 드라이브로 또는 볼륨으로 나누기도 합니다. 폴더도 같은 맥락의 결과물입니다. 하나의 큰 공간을 더 작게 나눠 사용하는 이런 방식이 소스 코드에 적용된 결과가 바로 영역scope이라고 할 수 있습니다. 프로그래밍을 처음 배울 때는 소스 코드가 (함수의 정의 등을 제외하고) 맨 위에서 아래로 한 .. 2020. 6. 23.
파이썬처음배우기: VII. 함수 만들기, 2부 함수의 프라이버시(feat. 영역) 내다볼 수는 있어도 들여다볼 수는 없다 전역과 지역, 전역 변수와 지역 변수 2부 함수의 프라이버시 지난 1부에서는 함수의 구조에 대해 살펴봤습니다. 2부에서는 함수에 사용되는 변수들을 더 깊게 파헤치겠습니다. 우선 지난 1부 말미에서 소개한 matrix_2.py를 다시 들여다보겠습니다. # matrix_2.py 1 2 3 4 5 6 7 8 9 10 def pill(): choice = input("Enter your choice (blue/red): ") return choice you = pill() print(f"You take the {you} pill.") if you == 'blue': print("The story ends.") elif you == 'red': print("You stay .. 2020. 6. 10.