Python 43

[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)..

[TIL] ISBN코드 활용 도서번호 검증(21.11.30)

※ ISBN 코드를 이용해 도서 번호 검증하기 - ISBN(International Standard Book Number) 코드는 각 출판사가 펴낸 도서의 국제 표준에 맞추어 붙이는 도서 고유 번호이다. ISBN 코드는 10~13자리로 구성되며 13자리 ISBN 코드의 경우 다음과 같은 형식으로 구성됨. 예시로 979(접두부)-11(국별번호)-957304(발행자번호)-3(서명식별번호)-8(체크기호) 와 같다. ISBN 코드의 유효성을 검증하는 방법은 ISBN 코드 12자리 숫자에 가중치 1과 3을 번갈아 곱해 값을 더하고 가중치의 합을 10으로 나누어 나머지를 구하며 10에서 나머지를 뺀 값이 체크기호가 되며, 나머지가 0인 경우 체크기호가 0이 된다. def isbn_check(isbn): s = 0 ..

[TIL] 리스트 원소 (21.11.29)

※ 리스트의 원소 추가 - 리스트 객체의 append() 함수를 통해 리스트의 마지막 위치에 새로운 원소를 추가할 수 있으며 insert() 함수를 통해 리스트의 특정 위치에 새로운 원소를 삽입할 수 있다. 또한, len() 함수는 리스트 객체의 원소 개수를 반환한다. example = [] example.append("가")# example 리스트에 "가" 추가 example.append("나")# example 리스트에 "나" 추가 example.append("다")# example 리스트에 "다" 추가 print(example) for i in range(len(example): print(i, example[i]) example.insert(2, "라") print(example) for i in..

[TIL] 로봇 청소기 움직임 (21.11.28)

※ 로봇 청소기 이동과 귀환하기 - 우리의 생활에서 흔히 볼 수 있는 로봇청소기는 보통 제조사에서 정해둔 모드에 알맞게 미리 정해진 모드에 따라 경로를 정해 이동한다. 이번엔 이러한 특성에 맞게 프로그래밍을 해볼 것 이다. import turtle as t robot_fn = "robotic_vacuum.gif"# 경로내에 robotic_vacuum.gif 파일이 있어야 함 rx = [] ry = [] move_cnt = 0 def move_robot(action): t.clear() if action == 0: for i in range(move_cnt): t.goto(rx[i], ry[i]) elif action == 1: for i in range(move_cnt-1, -1, -1): t.goto(..

[TIL] 7세그먼트 개별 LED 숫자 표시

※ 7세그먼트의 개별 LED를 이용해 숫자 표현하기 - 7세그먼트는 a~g 단자를 이용해 개별 LED를 켜고 끌 수 있는데 그 방식을 두가지로 나눌 수 있다. 공통 캐소드 타입(common-cathode type)은 전류를 보낸 단자를 통해 연결된 각 LED가 켜지게 되며 공통 애노드 타입(common-anode type)은 전류를 보내지 않은 단자와 연결된 LED가 켜지게 된다. 위 예시와 같이 애노드 타입은 세그먼트에서 1을 표현하고자 하는 경우 a, d, e, f, g에 전류를 보내 b, c의 led가 켜지게 되어 1이 표시가 된다. 캐소드 타입의 경우 1을 표현하고자 하는 경우는 b, c 에만 전류를 보내 1을 표시하게 된다. 이를 프로그램 내에서 코드예시로 본다면 다음과 같다 s7seg_num ..

[TIL] 파이썬으로 배우는 STEAM 코딩(21.11.26)

※ 7세그먼트 LED를 이용한 숫자 표시 - 7세그먼트(7 Segment)는 7개의 LED 획으로 숫자나 문자를 나타내는 표시창이며 보통 전자시계, 게이지 등 수치를 표현하는데 주로 사용된다. import turtle as t s7seg_img = ["7s0.gif", "7s1.gif", "7s2.gif", "7s3.gif", "7s4.gif", "7s5.gif", "7s6.gif", "7s7.gif", "7s8.gif", "7s9.gif", "7s10.gif"] def disp_num(k): t.shape(s7seg_img[k]) t.stamp() def key_0(): disp_num(0) def key_1(): disp_num(1) def key_2(): disp_num(2) def key_3():..

[TIL] 파이썬으로 익히는 STEAM코딩 (21.11.25)

※ 화재경보기 알고리즘 - 감지기는 화재가 발생할 떄 열이나 연기, 압력, 이온 등을 감지하는 장치인데 이 중 한 종류인 정온식감지기는 주위 온도가 일정한 온도 이상이 될 경우 작동하고 작동하는 온도를 공칭작동온도라고 한다. 해당 온도의 범위는 섭씨 60도~섭씨150도 이며, 섭씨 60도에서 80도 미만은 5도 간격으로, 섭씨 80도 이상은 10도 간격으로 설정되어 있다. 또한, 작동 온도에 따라 백색, 청색, 적색으로 표시가 된다. 백색: 80도 미만, 청색: 80도~120도 미만, 적색: 120도 이상 import turtle as t color_status = ["white", "blue", "red"] alert_status = ["정상", "주의", "화재"] tempc = 50 def chec..