인터넷에서 코딩을 하려면 어떻게 해야 하나요?
구글 검색 : 구름 ide
goormIDE - A Powerful Cloud IDE Service 클릭 후 상단 메뉴에서 ‘로그인’ 클릭.
구글 아이콘 클릭 후 구글 계정과 비밀번호 입력 후 ‘다음’. 직업과 사용언어 입력 후 ‘추가 정보 저장’
다시 로그인.
‘새 컨테이너’ 클릭.
소프트웨어 스택에 파이썬이 선택 되었는지 확인 후 ‘생성하기’
‘컨테이너 실행하기’ 클릭


날씨 정보를 가져오는 코딩을 하려면 어떻게 하나요?
우선 관련 라이브러리를 가져옵니다.
Requests 함수로 openweathermap의 날씨 정보를 가져오고, 이를 json 함수로 문서화(딕셔너리화)합니다.
딕셔너리 명령어로 필요한 날씨 정보 항목만 출력합니다.

날씨 정보를 가져오려면 어떤 라이브러리가 필요한가요?
Requests 라이브러리가 필요합니다. HTTP 통신이 필요한 프로그램을 작성할 때 가장 많이 사용되는 라이브러리입니다. 특히 원격에 있는 API를 호출할 때 유용하게 사용할 수 있습니다.
구름ide엔 이미 requests 라이브러리가 설치되어 있으므로 따로 설치할 필요가 없습니다.
json 라이브러리도 필요합니다. JSON은 JavaScript Object Notation의 약자. 데이타를 교환하는 한 포맷으로서 특히 웹 브라우져와 웹서버 사이에 데이타를 교환하는데 많이 사용되고 있습니다. 가장 많이 사용되는 JSON 포맷은 Key-Value Pair의 컬렉션입니다.
JSON 문자열을 다시 Python 타입으로 변환할 수 있다 (JSON 디코딩). Load 함수를 사용합니다.

Requests 함수를 어떻게 사용하나요?
import requests
import json
city = “Gunpo" #도시 Seoul, Suwon-si 등
apiKey = "35264807cb4fabd9dc2e55a47d"
lang = 'kr' #언어
units = 'metric' #화씨 온도를 섭씨 온도로 변경
api = f" https://api.openweathermap.org/data/2.5/weather?q= {city}&appid={apiKey}&lang={lang}&units={units}"
Get 함수로 api에서 필요한 정보를 가져옵니다.  result = requests.get(api)

apiKey란 뭔가요?
apiKey = "35264807cb4fabd9dc2e55a47d” Api를 사용할 권한을 가져오는 비밀번호 같은 것입니다.
API란?
API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말입니다. 고유한 기능을 가진 두 소프트웨어 간의 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법입니다.
https://openweathermap.org/에서상단 오른쪽에 있는 메뉴 단추 클릭. ‘Sign In’ 메뉴 클릭. ‘Create an Account’ 클릭.

apiKey를 어떻게 얻나요?
https://openweathermap.org/에서 상단 오른쪽에 있는 메뉴 단추 클릭. ‘Sign In’ 메뉴 클릭. ‘Create an Account’ 클릭.


Api=f" http://api.op.org/weather?q= {city}”는 무슨 뜻인가요?
f-string을 사용하여 인터넷주소(URL)에 변수(city 등)를 사용할 수 있습니다.
f-string이란?
문자열을 출력해 주는 형식입니다. 파이썬 3.6버전부터 추가된 출력 기능입니다.
문자열 맨 앞에 f를 붙여주고, 중괄호 안에 직접 변수 이름이나 출력하고 싶은것을 바로 넣으면 됩니다. f'문자열 {변수} 문자열'

1월부터 12월까지 출력하는 f-string 포멧을 만들려면 어떻게 해야 하나요?
month = 1
while month <= 12:
    print(f'2023년 {month}월')
    month = month + 1

Api에서 가져온 텍스트를 파이썬에서 사용하려면 어떻게 해야 하나요?
Loads() 함수를 사용합니다. Json 문자열을 파이썬의 딕셔너리 자료형으로 변환합니다.

result = json.loads(result.text)

print(result)

 

result.text은 뭔가요?
.text는 Requests의 함수인데, Html 문서에서 태그를 제외하고 텍스트만 가져옵니다. Json은 srt(문자열)만 불러올 수 있습니다.

<td>텍스트</td>

<td></td>

<td><p>다른 텍스트</p></td>

<td>또 <p>다른 텍스트</p></td>
텍스트
다른 텍스트
또 다른 텍스트
.content 함수를 써도 결과는 같습니다. 다만 차이점은 한글 표현에 있습니다. 1바이트인 알파벳과 숫자는 잘 표현하나, 한글처럼 2바이트인 경우 ‘맑음’이 "\xeb\xa7\x91\xec\x9d\x8c" 이렇게 표현됩니다.

가져온 자료를 활용하려면 어떻게 해야 하나요?
가져온 자료가 딕셔너리로 변환되었으므로, 딕셔너리에서 사용하는 키 : 밸유 쌍을 이용합니다.

딕셔너리란 뭔가요?
사람은 누구든지 "이름" = "홍길동", "생일" = "몇 월 며칠" 등으로 나타낼 수 있는데, 파이썬은 영리하게도 이러한 대응 관계를 나타낼 수 있는 자료형으로 딕셔너리(Dictionary)가 있습니다.
딕셔너리는 어떻게 만드나요?
{Key1:Value1, Key2:Value2, Key3:Value3, ...}
Key와 Value의 쌍 여러 개가 { }로 둘러싸여 있습니다. 각각의 요소는 Key : Value 형태로 이루어져 있고 쉼표(,)로 구분되어 있습니다.
dic = {'name':'Hong', 'phone':'01011111234'}

이름과 전화번호를 알려면 어떻게 하나요?
키를 사용해 밸유를 출력할 수 있습니다.

print(dic['name'])

print(dic['phone'])

대괄호 []은 뭔가요?
리스트입니다.
리스트는 뭔가요?
무지개색, 요일, 홀수 등 일련의 요소를 묶어서 표현하는 자료형입니다.
리스트명 = [요소1, 요소2, 요소3, ...]
odd = [1, 3, 5, 7, 9]
첫번째 요소를 출력하려면?
odd[0]
a = [1, 2, 3, ['a', 'b', 'c']]에서 ‘a’를 출력하려면?
Aa[-1][0]
-1? 제일 마지막 요소.

나머지 코딩
print(result)
name = result['name']
lon = result['coord']['lon']
lat = result['coord']['lat']
weather = result['weather'][0]['description']
temperature = result['main']['temp']
feels = result['main']['feels_like']
humidity = result['main']['humidity']
print('도시: ' + name)
print('경도: ' + str(lon) +', 위도: ' + str(lat))
print('날씨: ' + str(weather))
print('온도: ' + str(temperature))
print('체감온도: ' + str(feels))
print('습도: ' + str(humidity))

result['weather'][0]['description']은 뭔가요?
'weather': [{'id': 800, 'main': 'Clear', 'description': '맑음', 'icon': '01n'}]
Result 딕셔너리에서 ‘weather’키의 밸유를 출력합니다.
‘weather’키의 밸유가 리스트이므로 반드시 인데싱으로, 즉 숫자(순서)로 추출해야 합니다. [0]은 리스트의 첫번째 요소입니다. 리스트가 하나 밖에 없으니 [0]입니다.
밸유의 리스트 가운데 ‘description’ 키의 밸유를 출력합니다. 즉 ‘밝음’을 출력합니다.

print('경도: ' + str(lon) +', 위도: ' + str(lat)) 에서 왜 str(문자열)로 변환했나요?
‘+’로 출력 문자를 결합하려면 결합하는 요소들이 문자열이어야 합니다.
문자열로 변환하는 함수는 str()

영단어 공부하는 코딩을 하려면 어떻게 하나요?
영단어가 적힌 메모장 텍스트 파일을 불러옵니다.
한 줄 한 줄 읽어 리스트에 추가합니다. 영어는 영어 리스트에, 그 뜻은 한국어 리스트에 추가합니다. 영단어 텍스트 파일은 한 줄어 영어와 그 뜻이 하나씩 있는데, 영어와 그 뜻은 Tab키로 구분하여 놓았습니다. 이점을 이용하여 Tab키를 기준으로 각각 나누어 영어와 한국어 리스트에 넣습니다.
사용자가 숫자를 입력하도록 합니다. 만약 1을 입력했다면 +19 하여 1부터 20까지 중에서 난수를 정하도록 합니다.
정해진 난수 번째 항목을 영어 리스트에서 출력합니다.
숫자 1를 입력하지 않으면, 그러니까 아무 키나 누르면(안내문으로 엔터를 누르도록 합니다), 영어의 뜻을 출력하도록 합니다(같은 줄에 같은 리스트 항목 번호이므로 한국어 리스트에서 같은 번호 번째 항목을 출력합니다.)

영단어 텍스트 파일을 불러오려면 어떻게 해야 하나요?
우선 한글을 자유롭게 사용하기 위해 utf-8로 코딩 환경을 정해주고, 난수를 만들기 위한 impor를 하고, 영어 리스트로 en을, 한국어 리스트로 kr을 만들어둡니다.
# -*- coding: utf-8 -*-
from random import randint
en = []
kr = []
Open함수를 통해 영단어 텍스트 파일을 불러옵니다. 
result_f = open("vocaUTF8a.txt")

구름 IDE에서 파일을 불러오려면 어떻게 해야 하나요?
우선 ‘vocaUTF8a.txt’ 파일을 77story에서 다운로드 해 놓습니다. 참고로 vocaUTF8a.txt 파일은 utf8 형식으로 저장해 놓았습니다. 이렇게 해야 한글이 제대로 보입니다.
구름 IDE 파이썬 컨테이너에서 파일 메뉴에 들어갑니다. [파일 – 가져오기 – 파일]. 
작업하는 컨테이너 이름을 선택하고, ‘파일선택’ 단추 클릭. 다운로드 폴더에서 vocaUTF8a.txt 파일을 선택하고 ‘열기’ 단추 클릭.

불러온 텍스트 파일을 어떻게 리스트에 넣나요?
For문을 통해 한 줄씩 모두 불러옵니다.
불러온 후 같은 줄 앞에 있는 영단어는 en 리스트에 넣고, Tab으로 분리된 그 다음 한국어(영어의 뜻)는 kr 리스트에 하나하나 추가합니다. 텍스트 파일을 닫아줍니다.
For line in result_f:
      (e, k) = line.split('\t')
      en.append(e)
      kr.append(k)
result_f.close()

(e, k) = line.split(‘\t’) 는 무슨 뜻인가요?
텍스트 파일에서 한 줄을 가져와 Tab 키로 나뉜 부분을 각각 e 변수와 k 변수에 넣습니다.
(e, k)는 무슨 의미인가요?
튜플로 변수를 정의하는 것입니다. 다음과 같은 것입니다.

a, b = ('python', 'life')

이것은 아래 표현과 같은 것입니다.

(a, b) = 'python', 'life'

튜플은 괄호를 하지 않아도 괜찮습니다.
튜플은 리스트와 같은데, 다만 수정할 수 없는 점이 다릅니다.
그러니까 e 변수에 튜플로 한 줄 앞 단어를, k 변수에 튜플로 그 다음 단어를 넣어주는 변수 선언(바인딩)입니다.

시작할 영단어를 선택하려면 어떻게 하나요?
시작할 영단어 순번을 선택하도록 합니다. 전체가 1907 단어임을 알려주고 시작하고 싶은 영단어 번호를 숫자로 고르도록 합니다. 즉 20번 영단어부터 공부하려면 20을 입력하도록 합니다.
q = input("영단어가 총 1907개 입니다. 시작할 영단어 번호를 입력하면 20개씩 연습합니다. 시작할 숫자를 적고 엔터를 쳐 주세요 : ")
a = int(q)
20개씩 공부하려면?
b = a + 19

계속 공부할지 물을 때 1을 입력하면 그만 공부하도록 하려면 어떻게 하나요?
g = 0
while g != "1" :
     g = input("계속 하려면 엔터를,  그만 하려면 숫자 1을 입력하고 엔터를 치세요 : ")
     answer = "1“
     if g == answer :
         print ("다음에 또 봐요~~")
         break

오늘 공부를 하려면 어떻게 하나요?
Secret변수에 입력한 영단어 번호에서 20번째까지 중에서 난수를 선택하도록 합니다.
secret = randint(a,b)
임의의 영단어를 출력합니다.
print(en[secret])

영단어 뜻을 확인 하려면 어떻게 하나요?
영단어를 보고 그 뜻을 생각한 다음에 엔터를 치면, 즉 숫자 1을 치지 않으면, 영단어 뜻을 보여줍니다.
else :
         print (kr[secret])

영단어 공부 코딩

# -*- coding: utf-8 -*-
from random import randint

en = []
kr = []
result_f = open("vocaUTF8a.txt") 
for line in result_f: 
    (e, k) = line.split('\t') 
    en.append(e)
    kr.append(k)
result_f.close()

q = input("영단어가 총 1907개 입니다. 시작할 영단어 번호를 입력하면 20개씩 연습합니다. 시작할 숫자를 적고 엔터를 쳐 주세요 : ")
a = int(q)
b = a + 19
g = 0
while g != "1" :
    secret = randint(a,b)
    print(en[secret])
    g = input("답을 생각해 보시고  계속 하려면 엔터를,  그만 하려면 숫자 1을 입력하고 엔터를 치세요 : ")
    answer = "1"
    if g == answer :
        print ("열심히 공부하셨어요! 다음에 또 봐요~~")
        break
    else :
        print (kr[secret])

'코딩배우기' 카테고리의 다른 글

파이썬 코딩 4 웹크롤링  (0) 2023.08.22
파이썬 코딩 3 유틸리티  (0) 2023.08.21
파이썬 코딩 1 기본 코딩법  (0) 2023.08.18
스크래치 코딩 2  (0) 2023.08.18
스크래치 코딩 1  (1) 2023.08.18
Posted by 오미자컴
,