til 206

[TIL] Set 타입

※ 셋(set) 타입 - 셋 타입은 항목 간에 순서가 없다는 특징과 항목간 중복을 허용하지 않는다는 특징이 있다. 예시로 {1, 1, 1, 2, 2} 와 같은 값을 set 화 시킨다면 {1, 2} 만 남게 된다. 이러한 점은 사전과 비슷하다고 볼 수 있는데 사전도 동일한 값을 지닌 key의 중복을 허용하지 않는 특성이 있고 이를 통해 알 수 있는 것은 set 타입의 항목도 변경 불가능한 객체여야 한다는 것을 짐작할 수 있다. - 기본적으로 셋(set)은 우리가 고등학교때 배운 집합과도 같은 성질인데 집합의 연산에는 합집합, 교집합, 차집합, 여집합이 있다. set 또한 마찬가지로 표기 기호는 완전히 동일하지는 않지만 셋 타입도 집합처럼 각자의 집합을 표기할 수 있는데 예시는 다음과 같다. A|B # 합집..

[TIL] 리스트와 사전의 상호변환

※ 사전을 리스트로 변환 - 타입 변환을 이용하여 사전을 리스트로 변경해 key 목록의 리스트를 얻을 수 있다. 하지만, 여기서 주의해야 할 점은 사전을 리스트로 변환한 후에는 value 값에 대한 정보가 사라진다는 점인데 이는 두 타입의 항목 형식이 다르기 때문에 발생하는 차이다. dict = {"가":1, "나":2, "다":3, "라":4} list(dict) print(dcit) # 출력 결과 ["가", "나", "다", "라"] ※ 리스트를 사전으로 변환 - 위 예시와는 반대로 리스트를 사전으로 변환할 수 있는데 일반적으로 한개의 입력값을 두개로 나누어 표현할 수 없듯이 일반적으로 리스트를 사전으로 변환시키려고 한다면 오류가 발생한다. 하지만, 다음 예시와 같은 리스트들은 사전으로 변환할 수 있..

[TIL] 사전의 연산

※ 사전의 연산 ○ 색인 연산 -사전의 색인은 key 값을 이용해 리스트와 같이 시퀀스 타입의 색인 연산 방식과 동일하게 작동한다. 다만 key값을 사용자가 지정할 수 있다는 것이 차이점이다. 또한 사전에는 시퀀스 타입과는 달리 항목에 순서가 없기 때문에 분할 연산[Slicing]을 지원하지 않아 해당 기능을 사용할 수 없다는 것이 특징이다. 다음 예시와 같이 key 값이 '라' 인 항목을 생성할 수 있다. dict['라']=4 print(dict) # 출력 결과 {'가':1, '나':2, '다':3, '라':4} ○ update 메소드 - 사전에 항목을 추가하는 방식은 색인 연산 외에도 update 메소드를 이용해 할 수 있는데 dict.update({'라':0, '마':5}) print(dict) #..

[TIL] 파이썬 : 사전(Dictionary)

※ 사전(Dictionary) - 사전(dcit)의 형태는 마치 영한사전에서 영어단어와 그 뜻이 연결되어 하나의 항목을 이루는 것처럼 key와 연결된 value가 하나의 항목을 이룬다. 사전의 key는 시퀀스 타입객체의 색인(index)와 같은 기능을 한다고 생각하면 이해하기 쉽다. 사전의 생성은 {key:value} 와 같이 key와 value를 중괄호로 감싼 형태다. 나라와 인구수를 사전으로 생성하면 다음의 예시와 같다. poppul_dict = {'China': 1367485388, 'India': 1251695584, 'Indonesia': 321368864, 'America': 513949445, 'Brazil': 255993674} 사전은 시퀀스 타입과는 구별되는 사전의 항목들이 순서를 가지지..

[TIL] 동전 앞면/뒷면 맞추기 게임

※ 두 동전의 앞면/뒷면 맞추기 게임하기 - 첫 동전에서 앞면이 나올 확률 P(A)는 1/2고, 두 번째 동전에서 앞면이 나올 확률 P(B)는 1/2일 때, 두 개의 동전을 동시에 던졌을 때 모두 앞면이 나올 확률은 1/4 이다. 이를 터틀 스크린을 이용한 게임을 프로그램으로 코딩하면 다음과 같다. import turtle as t import random import time coin_face = [ "coin-100-f.gif", "coin-100-b.gif"]# 실행하는 파일 경로에 해당하는 파일이 위치해야 작동 def coin_game(): global c_cnt t.clear() coin1 = random.randint(0, 1) coin2 = random.randint(0, 1) cq1 = i..

[TIL] 피보나치 트리 그리기 (21.12.08)

※ 피보나치 트리 그리기 import turtle as t def fibo(n): if n == 0: return 0 elif n == 1: return 1 else: return fibo(n-1) + fibo(n-2) def fibo_tree(length, n): if n > 0: t.forward(length) t.right(30) fibo_tree(length*3/4, n-1) t.left(60) fibo_tree(length*3/4, n-2) t.right(30) t.backward(length) t.setup(600, 600) s = t.Screen() t.left(90) t.color("green") t.penup() t.goto(0, -200) t.pendown() t.speed(0) n =..

[TIL] 피보나치 수열 계산 (21.12.07)

※ 피보나치 수열 계산하기 - 피보나치 수(Fibonacci Numbers)는 0과 1로 시작하며, F0 = 0, F1 = 1, Fi = Fi-1 + Fi-2(i>=2) 의 재귀식으로 정의가 된다. def fibo(n): if n == 0: return 0 elif n == 1: return 1 else: return fibo(n-1) + fibo(n-2) n = int(input("f(n), n :")) for i in range(0, n+1): rst = fibo(i) print("fibo(%d) = %d"%(i, rst)) 피보나치 수열은 위와같이 재귀함수를 이용해 풀이할 수 있다. 피보나치 수열은 0일때 0, 1일때 1, 2 이상부터는 해당하는 수열보다 1과 2가 작은 수열의 합이므로 fibo(n..

[TIL] 음계/주파수 이용 피아노 연주 (21.12.03)

※ 음계와 주파수를 이용한 피아노 건반 연주하기 - 피아노의 기본 음계인 A4(라)음의 표준 주파수는 440Hz다. A4음을 기준으로 1 옥타브가 증가할 때마다 주파수는 2배가 되고, 1 옥타브가 감소할 때마다 주파수는 1/2배가 된다. 예를 들어 A5의 주파수는 880Hz 이고 A3의 주파수는 220Hz인 것과 같다. 아래와 같이 0옥타브 A0음부터 8옥타브 G8#음까지의 각 음계별 주파수를 계산할 수 있다. a4base = 440 for i in range(9): abase = a4base / 2 ** (4-i) for j in range(12): freq = round(abase * 2**(j/12)) print(freq, end=" ") print("") print("") import turtle..

[TIL] 마우스와 키보드로 그림 그리기 (21.12.02)

※ 마우스와 키보드를 이용한 그림 그리기 - 터틀 그래픽에서는 마우스와 키보드를 이용해 간략한 도형이나 그림을 그릴 수 있다. 마우스를 이용해 곡선이나 도형 등을 그릴수 있고, 키보드를 이용해 선의 두께 조정, 형태 변경이나 펜 올리기와 내리기와 같은 동작을 할 수 있다. import turtle as t draw_action = 1 oldx = 0 oldy = 0 def new_clear(): global draw_action global oldx global oldy t.clear() t.pensize(1) t.pendown() draw_action = 1 oldx = 0 oldy = 1 def draw(x, y): global oldx global oldy if draw_action == 1: # ..

[TIL] 문자열과 서식문자 (21.12.01)

※ 문자열 선언 - 문자열(string)은 문자나 기호가 순서대로 나열되어 있는 자료이며, 글자를 뜻하는 텍스트(text) 혹은 스트링(string)으로 부른다. 문자열의 선언은 작은따옴표나 큰따옴표를 이용하고, 두 따옴표를 서로 조합해 이용할 수 있다. 큰따옴표를 연속으로 3개 사용(""" """)하여 문자열을 감쌀 경우 문자열 중간에 줄바꿈이 있더라도 해당 줄바꿈을 포함한 모든 문자열을 하나의 문자열로 선언한다. st1 = 'Text' str2 = "String" str3 = """Text String """ str4 = "Text's string" str5 = 'Text "in" string' print(str1) print(str2) print(str3) print(str4) print(str5)..