+ All Categories
Home > Documents > Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile ›...

Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile ›...

Date post: 23-Jun-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
24
Where is the Space Station? Simple coding for total beginners PYTHON
Transcript
Page 1: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

Where is the Space Station?

Simple coding for total beginners

PYTHON

Page 2: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

{c

ode club}

www.codeclub.org

{c

ode club}

www.codeclub.org

{c

ode club}

www.codeclub.org

CodingIw

ww.codeclub.org

{code club}

Coding

Star

{c

ode club}

www.codeclub.org

{code club}

www.codeclub.orgFirst published in 2018 by Raspberry Pi Trading Ltd, Station Road, Cambridge, CB1 2JH

Writers: Rik Cross, Tracy Gardner

Illustrator: Timothy Winchester • Design: Critical Media

Editor: Phil King • Sub Editor: Nicola King

Publisher: Russell Barnes • CEO: Eben Upton

Projects tested by: Alexander King & the Code Club community

ISBN: 978-1-912047-67-3

Printed in China

The publisher, and contributors accept no responsibility in respect of any omissions, errors or issues relating to goods, software, viruses, or exposure to harmful web content on websites other than its own. Except where stated, the content of this book is licensed

under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)

COPYRIGHT ⓒ2019 CODE CLUB Republic of KOREA.

발행일

Nov 2019

발행처

04789 서울특별시 성동구 왕십리로 130, 10층

(사)코드클럽한국위원회

교육문의

Tel. +82-2-792-0615Fax. +82-2-6213-0615Email. [email protected]

Page 3: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

모든 Code Club회원에게 회원 가입을 추천합니다. 우리는 가입자 수를 체크하여 우리의 기여도

를 판단하고, 이를 바탕으로 계속해서 어린이들이 무료로 코딩을 배울 수 있는 컨텐츠를 제공할

수 있습니다. 가입은 codeclubworld.org 에서 할 수 있습니다.

개요 이 프로젝트에서는 웹 서비스를 사용하여 국제 우주 정거장 (ISS)의 현재 위치를 찾고 지도상에 이를 표시해 볼 것입니다.

Where is the Space Station?

Python

1

{c

ode club}

www.codeclub.org

{c

ode club}

www.codeclub.org

{c

ode club}

www.codeclub.org

CodingIw

ww.codeclub.org

{code club}

Coding

Star

{c

ode club}

www.codeclub.org

{code club}

www.codeclub.orgFirst published in 2018 by Raspberry Pi Trading Ltd, Station Road, Cambridge, CB1 2JH

Writers: Rik Cross, Tracy Gardner

Illustrator: Timothy Winchester • Design: Critical Media

Editor: Phil King • Sub Editor: Nicola King

Publisher: Russell Barnes • CEO: Eben Upton

Projects tested by: Alexander King & the Code Club community

ISBN: 978-1-912047-67-3

Printed in China

The publisher, and contributors accept no responsibility in respect of any omissions, errors or issues relating to goods, software, viruses, or exposure to harmful web content on websites other than its own. Except where stated, the content of this book is licensed

under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)

모든 Code Club회원에게 회원 가입을 추천합니다. 우리는 가입자 수를 체크하여 우리의 기여

도를 판단하고, 이를 바탕으로 계속해서 어린이들이 무료로 코딩을 배울 수 있 는 컨텐츠를 제공

할 수 있습니다. 가입은 codeclubworld.org 에서 할 수 있습니다.

Page 4: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

1 단계: 우주에는 누가 있나요?

{ "message": "success" , "number": 3 ,

"peop le " : [ {

" c r a f t " : " I S S " , "name": " Y u r i Malenchenko"

} , {

" c r a f t " : " I SS" , "name": "Timothy Kopra"

} , {

" c r a f t " : " I S S " , "name": "Timothy Peake"

} ]

}

우리는 우주에 대한 실시간 정보를 제공하는 웹 서비스를 이용할 것입니다. 우선 현재 누가 우주에 있는지 확인해 봅시다.

Activity Checklist

웹 서비스는 웹 페이지 처럼 주소 (URL)을 가지고 있습니다. 단, 주소를 입력하면 HTML 웹 페이지를 보여주는 데이터를 반환합니다.

웹 브라우저에서 다음 주소를 입력하여 접속하십시오

(http://api.open-notify.org/astros.json).

그러면 다음과 같은 화면을 볼 수 있을 것입니다.

2

Page 5: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

• 출력된 데이터는 실시간으로 업데이트 되는 데이터이므로 위 예시와 다른 결과를

얻을 수도 있습니다. 이러한 데이터 포멧을 JSON 이라고 합니다

(제이슨

이라고

읽습니다).

Python에서

서비스를

호출하여

결과를

사용하도록

합니다.

3

다음과 같은 코드를 main.py에 추가하여 url 변수에 주소를 추가 하십시오.

u r l l i b . r e q u e s t 와 json 모듈은 이미 import되어 있습니다

• 다음 주소에 접속하여 trinket을 실행하십시오 (jumpto.cc/iss-go). 만약 당

신이 온라인 상에서 이 문서를 보고 있다면 아래의 내장 trinket을 사용할

수도 있습니다.

Page 6: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

그렇게 한다면 다음과 같은 출력 결과를 확인할 수 있을 것입니다.

{ 'message ' : ' s u c c e s s ' , 'number ' : 3 , ' p e o p l e ' : [ { ' c r a f t ' : ' I S S ' , 'name' : ' Y u r i Malenchenko'}, { ' c r a f t ' : ' I S S ' , 'name' : 'T imothy K o p r a ' } , { ' c r a f t ' : ' I S S ' , 'name ' : 'T imothy Peake ' } ] }

출력 결과는 message, number, people 와 같은 3개의 key를 가지고 있는 Python dictionary 입니다.

웹 서비스를 호출합니다.

그런 다음 JSON response를 Python의 데이터 구조로 불러 옵니다.

4

Page 7: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

r e s u l t [ ‘n u m b e r ’ ] 는 result dictionary에서 ‘number’ key와 관련된 값을 출력합니다. 아래 예시에서 이 값은 3 입니다.

‘people’ key와 관련된 값의 변수형은 dictionary의 list입니다. r e s u l t [ ‘ p e o p l e ’ ] 을 변수 p e o p l e에 저장하여 사용할 수 있도록 합니다.

출력 결과에서 ‘success’ 변수는 요청이 성공하였음을 의미합니다. 우주에 누가 있는지에 따라서 다른 결과를 얻을 수 있다는 것에 유의하십시오.

• 이제 정보를 좀 더 읽기 좋게 표현해 보십시오. 우선, 우주에 있는 사람 수를 체크하여 출력합니다.

5

Page 8: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

p e o p l e 변수를 력 하면다음과 같은 결과를 얻을 수 있습니다.

[ { ' c r a f t ' : ' I S S ' , 'name' : ' Y u r i Malenchenko'}, { ' c r a f t ' : ' I S S ' , 'name' : 'T imothy Ko p r a ' } , { ' c r a f t ' : ' I S S ' , 'name' : 'T imothy Peake ' } ]

Python의 for loop를 사용하여 이를 구현할 수 있습니다. 각각의 for loop에서 변수 p 는 서로 다른 우주비행사에 대한 dictionary를 저장하는 임시 변수 입니다.

이제 각각의 우주비행사에 대한 정보를 출력할 수 있습니다.

6

P [ ‘ n a m e ’ ]을 출력하면 다음과 같은 결과를 얻을 수 있습니다. People i n Space: 3 Yur i Malenchenko Timothy Kopra Timothy Peake

우리는 현재 실시간 데이터를 이용하고 있으므로 지금 우주에 있는 사람의 수에 따라 다른 결과를 얻을 수 있습니다.

그런 다음 변수 ‘name’ 과 변수 ‘craft’ 를 확인할 수 있습니다.

Save Your Project

Page 9: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

도전: 우주 정거장을 보여주세요

우주 정거장에 탑승한 우주비행사는 물론 그들이 탑승한 우주정거장의 이름도 웹사이트를 통해 알 수 있습니다. (예를

들어

ISS).

스크립트를 추가하여 우주 비행사가 탑승한 우주 정거장의 이름을 출력할 수 있습니까? 예시:

People i n Space: 3 Yur i Malenchenko i n ISS Timothy Kopra i n ISS Timothy Peake i n ISS

7

MEMO.

Page 10: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

2 단계: 국제 우주 정거장은 어디에 있나요?

국제 우주 정거장은 지구의 궤도상에 있습니다. 국제 우주 정거장이 지구를 1바퀴 공전하는데 약 1시간 30분이 소요됩니다. 국제 우주 정거장의 평균 속력은 7.66km/s 입니다. 빠르죠! 다른 웹 사이트를 이용하여 국제 우주 정거장이 어디에 있는지 알아 봅시다.

Activity Checklist

• 우선 웹 브라우저의 새 탭에 다음 주소를 입력하여 실행하십시오 (http://api.open-notify.org/iss-now.json).

실행하면 다음과 같은 메시지를 볼 수 있을 것입니다.

8

{ " i s s _ p o s i t i o n " : { " l a t i t u d e " : 8.54938193505081, " l o n g i t u d e " : 73.

16560793639105 } , "message": "success" , " t imestamp": 1461931913 } 출력 결과는 현재 국제 우주 정거장이 지나고 있는 지구의 좌표를 포함하고 있습니다. Longitude (경도) 는 동쪽-서쪽 위치를 표현하고 -180 에서 180 사이의 값을 가집니다. 경도가 0인 선은 본초자오선으로 영국의 그리니치 천문대를 지납니다. Latitude (위도)는 남쪽-북쪽 위치를 표현하고 90 에서 -90 사이의 값을 가집니다. 위도가 0인 선은 적도를 의미합니다.

Page 11: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

• 이제부터 Python에서 똑같은 웹사이트를 불러와야 합니다. 스크립트 마지막에 다음의 코드를 추가하여 국제 우주 정거장의 현재 위치를 받아와 보십시오.

9

Page 12: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

Latitude (위도)와 longitude (경도)를 저장할 변수를 만들고 출력하십시오.

지도상에서 위치를 모여줄 수 있다면 더 유용할 것입니다 .

10

Page 13: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

우선 Python의 그래픽 모듈인 turtle을 import 합니다.

배경 이미지로 세계 지도를 불러옵니다. 이미 trinket에 세계 지도 이미지가 포함되어 있습니다.

11

Page 14: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

Turtle에 특정한 latitude (위도) 와 longitude (경도)를 넘겨줘야 합니다. 이것을 쉽게 하기 위해 우리가 사용하고자 하는 좌표와 화면의 좌표를 일치 시킵니다.

이제 우리가 사용할 좌표가 웹 서비스에서 얻은 latitude (위도) 와 longitude (경도)와 일치되었습니다.

12

NASA가 이 아름다운 지도와 이것을 재사용할 권리를 제공해 주었습니다! 지도는 0,0을 기준으로 정렬되어 있습니다.

우선 화면 크기를 이미지 크기와 맞게 720x360으로 조정해야 합니다.

screen.setup(720, 360) 을 코드상에 추가하십시오.

Page 15: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

• 국제 우주 정거장을 위한 turtle class를 만들어 보십시오.

13

프로젝트에는 ‘iss.png’ 와 ‘iss2.png’ 가 포함되어 있습니다. 두

이미지를

모두

사용해 보고 마음에 드는 것을 고르십시오.

• 국제 우주 정거장은 지도의 중앙에 나타납니다. 이제

지도상에서 알맞은 위치로 국제 우주 정거장을 옮겨 보십시오.

Page 16: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

몇 초간 기다린 뒤 다시 프로그램을 실행하여 국제 우주 정거장이 어디로 움직였는지 확인하십시오.

14

일반적으로 latitude (위도) 가 먼저 주어집니다. 하지만 (x, y)좌표를 그릴 때는 longitude (경도)를 먼저 입력해야 하므로 주의 하십시오.

작성한 프로그램을 실행하여 테스트 하십시오. 실행 결과 국제 우주 정거장이 지구상의 현재 위치로 이동해야 합니다.

Page 17: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

3 단계: 국제 우주 정거장이 언제 머리 위를 지날까?

국제 우주 정거장이 언제 특정 위치를 지날지 확인할 수 있는 웹 서비스도 있습니다. 국제 우주 정거장이 언제 미국 휴스턴에 있는 Space Center를 지날지 찾아 봅시다. Space Center의 latitude (위도)는 29.5502 이고 longitude (경도)는 95.097 입니다.

Activity Checklist

우선 해당 좌표를 지도상에서 점으로 표시 하십시오.

15

이제 언제 국제 우주정거장이 해당 위치를 지나갈지 알아 보십시오. 이전과 마찬가지로 웹 브라우저의 주소창에 다음 주소를 입력하여 웹 서비스를 실행할 수 있습니다 (http://api.open-notify.org/iss-pass.json). 하지만 실행 결과 다음과 같은 에러를 볼 수 있을 것입니다.

Page 18: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

우리가 사용할 웹 서비스는 latitude (위도) 와 longitude (경도)를 입력으로 주어야 합니다. 따라서 입력하는 주소에 latitude (위도) 와 longitude (경도)를 추가 하십시오.

Latitude (위도) 와 longitude (경도) 입력은 ? 이후에 추가하고 각각 & 로 구분합니다. l a t 과 l on을 입력으로 주소에 다음과 같이 추가합니다 (http://api.open-notify.org/iss-pass.json?lat=29.55&lon=95.1).

16

Page 19: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

응답 결과 국제 우주 정거장이 머리 위를 지나는 시간이 시간순으로 정렬된 결과를 얻을 수 있습니다. 국제 우주 정거장이 머리 위를 지나는 가장 빠른 시간인 첫 번째 결과에만 집중 하십시오. 출력된 시간은 standard time format이므로 Python에서 읽을 수 있는 시간 format으로 변경 해야 합니다.

• 이제 Python에서 웹 서비스를 실행해 보십시오.

스크립트 마지막에 다음과 같은 코드를 추가하십시오.

17

Page 20: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

이제 결과로부터 국제 우주 정거장이 머리 위를 지나는 가장 빠른 시간을

가져

옵니다.

다음과

같은

코드를

추가하십시오.

18

Page 21: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

(p r i n t o v e r 를 주석 처리 하거나 지워도 상관 없습니다.)

• 시간은 timestamp로 출력되므로 Python의 time module을 사용하여 우리가 읽을 수 있는 시간 (현지 시간)으로 변환해야 합니다. Turtle이 지도상에 표시된 점 옆에 국제 우주 정거장이 머리 위를 지나는 시간을 출력 할 수 있도록 하십시오.

• 스크립트의 윗 부분에 impor t t ime 을 추가하십시오.

• t ime .c ime ( ) 함수는 timestamp를 turtle이 출력할 수 있는 시간 format으로 변환합니다.

19

Page 22: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

도전: 국제 우주 정거장이 머리 위를 지나가는 시간 더 찾아 보기

http://www.latlong.net/ 과 같은 웹 사이트를 사용하여 당신이

관심

있는

latitude (위도) 와

longitude (경도)를

확인할

있습니다.

더 많은

위치에

대해

국제

우주

정거장이

머리

위를

지나가는

시간을

찾고

지도상에

표시할

있습니까?

서비스의

latitude (위도) 와

longitude (경도)를

바꿔야

합니다.

위치를

지도상에

그리고

시간을

표시해야

합니다.

20

Page 23: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

w

ww.codeclub.org

{code club}

{c

ode club}

www.codeclub.org

code!I can

www.codeclub.org

{code club}

{code club}

www.codeclub.org

whenclickedsay I can code!

{code club}

w

ww.codeclub.org

‘코드 클럽(Code Club)’은 영국 라즈베리파이재단에서 운영하는 무료 소프트웨어 교육

프로그램으로, 전 세계 어린이들이 처해진 환경에 상관없이 누구나 동일하게 소프트웨

어 교육을 받을 수 있도록 선생님과 자원 봉사자들에게 교육 커리큘럼과 운영 시스템

을 무상으로 제공하고 있습니다.

“모든 아이들이 열정과 디지털 메이킹 능력을 갖출 수 있는 세상을 만듭니다.”

“소프트웨어 교육의 로컬 에듀를 실현합니다.”

*로컬 에듀(LOCALEDU): 아이들에게 자신들이 나고 자란 지역을 가르 피고, 그 지역의 주민들과 상생할 수

있는, 그리고 나아가 그 지역에서 살아갈 수 있게 하는 교육을 의미, 즉, 학교(교사, 학부모, 학생), 교육청, 그

리고 지자체가 소통할 수 있는 통로를 만들어 협력하는 관계를 구축한다는 뜻.

LEARN

모든 아이들이 디지털 메이커로

서의 잠재력을 실현해 가는SW

교육 환경을 만들어갑니다

TEACH

교육봉사자들이 지속적으로 전

문성을 키워나갈 수 있도록 가

르치기좋은환경을만들어갑니다

SHARE

디지털 메이커들이 더 나은 교

육을 제공받을 수 있도록 정보

를나누는 환경을 만들어갑니다

코드클럽한국위원회 소개

Misson

Vision

핵심전략

후원 문의

코드클럽은 어린이를 위해 sw 교육기부를 실천하는 비영리 단체입니다.

여러분의 따뜻한 관심과 지원이 우리 아이들이 디지털 메이킹 능력을 갖출 수 있는 저변 확대를 위한

소중한 지지대가 됩니다.

코드클럽에서는 도움을 주실 후원 단체, 개인을 찾고있습니다. 많은 관심과 지원을 부탁합니다

문의 전화 : 02-792-0615

메일 : [email protected]

Page 24: Where is the Space Station?software.kr › main › UPLOAD › TCHMTR › attFile › 1576042386967.pdf · 2019-12-11 · errors or issues relating to goods, software, viruses, or

COPYRIGHT ⓒ2019 CODE CLUB Republic of KOREA.


Recommended