til 206

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

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

※ 포물선 운동 궤적 그리기 - 물체의 초기 속도를 v라고 하고 각도를 # 이라고 할때 x축 방향 ux = v * cox# y축 방향 uy = v * sin# 로 계산할 수 있다. 시간이 지날수록 속도는 변하며 x 축은 속도가 변하지 않은 상태로 동일한 속도가 유지되고 y축 방향은 중력의 영향으로 인해 y 축 속도가 vy = v * sin# - g * t가 된다. 이러한 속도 변화의 특성을 이용해 터틀 스크린에서 포물선 운동 궤적을 그려본다. import turtle as t import math tm = 0.3# 시간 간격 ux = 0# x 속도 uy = 0# y 속도 dx = 0# x 이동 거리 dy = 0# y 이동 거리 g = 9.8# 중력 가속도 velo = 0# 속도 ang = 0# 각도 de..

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

※ 자유 낙하 운동 궤적 그리기 - 터틀 스크린을 이용해 자유 낙하 운동의 궤적을 그리는 프로그램을 코딩 import turtle as t# 터틀 그래픽 모듈인 turtle 을 t로 불러들임 def draw_pos(x, y):# 터틀의 궤적을 표시하는 함수 t.clear() t.setpos(x, y) t.stamp() hl = -(t.window_height() / 2) tm = 0 while True: d = (9.8 * tm**2) / 2# 이동거리 계산 - 중력 가속도 9.8m/s ny = y - int(d) if ny > hl:# ny의 값이 화면 하달에 도달하지 않았을 경우 계속 반복 t.goto(x, ny) t.stamp() tm = tm + 0.3 else: break t.setup(500,..

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

※ DNA 염기서열의 순서 바꾸기 - DNA 염기서열은 A(아데닌), T(티민), G(구아닌), C(시토신)으로 이루어지며, 배치 순서에 따라 생명의 종과 생물학적 특성, 종간의 연관성이 결정이 되는 중요한 요소임 염기 서열 분석 방식 - 염기 A는 T로 T는 A로 G는 C로 C는 G로 바꾸는 상보적(complementary) 방식 - 염기서열의 순서를 역순으로 바꾸는 역순(reverse) 방식 - 상보적 염기서열을 다시 역순으로 바꾸는 상보적 역순(reverse-complementary) 방식 def comp(seq): comp_dict = {'A': 'T', 'T': 'A', 'C': 'G', 'G': 'C'} seq_comp = ""# 변환된 문자열을 누적시켜 저장하기 위한 빈 문자열 생성 for ..