본문 바로가기

[일상봇 만들기] 나의 하루하루를 도와줄 친구!

level_02_part_1

Level

02

01_문자열 포매팅을 사용하여 데이터 다루기

 

1_포매팅

'포매팅은 문자열의 한 지점 %s 을 지정하여 정보를 집어넣는 것입니다.' % 정보 

예)

day_length = '10시간'

result = '오늘 서울 낮의 길이는 %s 입니다.' % day_length

 

포매팅 이라는 단어는 포맷 + ing 으로 이루어져 있습니다. 

어려울 것 없어요, 그러니까 '포맷' 이라는 단어의 의미만 알면 어느정도 용도가 보인다는 말이지요.

 

흔히 컴퓨터를 '포맷한다' 라고 사용되는 이 단어는 '초기화', '양식', '서식' 의 의미를 갖고 있습니다.

컴퓨터를 포맷하고 윈도우를 다시 설치한다는 표현은 여기에서 '초기화' 의 의미로 사용된 것입니다.

 

지금 단원에서 이야기하는 포매팅은 '양식' 과 '서식' 의 의미를 갖고 있습니다.

포매팅은 문자열의 특정 위치를 %s 로 지정하여 정보를 집어넣는 것입니다.

여기서 정보라는 것은 숫자도 되고, 문자열도 됩니다.

 

 

포매팅을 하는 순서는 다음과 같습니다.

1. 문자열 안에 %s 로 정보가 들어갈 위치를 지정합니다.

   - 여러 개의 정보를 넣고 싶다면, 한 곳 뿐 아니라 여러 지점에도 넣을 수 있어요.

2. 문자열이 끝난 지점의 뒤에 % 를 넣습니다.

3. % 뒤에 넣고자 하는 정보를 넣습니다.

   - 여러 개의 정보를 넣고 싶다면, 소괄호 () 로 감싸서 여러 개를 묶어주세요.

 

 

예제 01

 지난 시간에 배운 문자열 슬라이싱을 활용해 원하는 부분을 가져와,

새로운 문자열 안의 원하는 지점에 넣어볼게요.

 

today = '2020-02-02 20:11:40.326952'

date = today[0:10]



result = '오늘의 날짜는 %s 입니다.' % date

설명 01

 SHAPE  \* MERGEFORMAT

 

 

예제 02

 지난 시간 sunrise 에서 얻은 하루 길이에 대한 정보도 보기 좋게 포매팅 해 봅시다.

하루하루 다른 정보가 들어오기 때문에, 여기 적혀있는 내용과 여러분이 가져올 정보는 조금 달라요.

예제 01 에서 다룬 date 와 하루 낮 길이 정보를 한꺼번에 문자열 안에 넣을 겁니다.

 

https://api.sunrise-sunset.org/json?lat=37&lng=126

위 사이트에 접속해서 나오는 정보를 json_value 변수에 문자열 형태로 넣어주세요. 

정보에는 쌍따옴표( " ) 가 있기 때문에, 소따옴표( ' ) 또는 여러줄 문자열을 이용하여야 합니다.

 

import json



today = '2020-02-02 20:11:40.326952'

date = today[0:10]



json_value = '''정보를 여기에 넣어주세요'''

dictionary = json.loads(json_value)

day_length = dictionary['results']['day_length']



result = '%s 일 오늘 서울 낮의 길이는 %s 입니다.' % (date, day_length)

print(result)

 

설명 01

 SHAPE  \* MERGEFORMAT

 

 

 

 

Level

02

02_컴퓨터를 쓰는 이유는 단순 반복작업을 줄이기 위해서!

 1_코드 없이 알아보는 제어문과 반복문

 

설명 01

 SHAPE  \* MERGEFORMAT

매일 아침에 일어날 때마다 겪는 상황입니다.

 

아침에 잠에서 깬 당신의 하루는 이렇게 시작할 거에요.

 

1. 요일에 상관없이 아침에 일어나 시계를 확인한다.

2. 평소보다 일찍 일어났는가? yes or no

    [Yes] - 더 잘 수 있음에 감사하며 잠이 든다.

    [No] - 하루를 시작한다.

 

여기에서 2 번에 해당되는 부분이 우리가 다루게 될 '제어문' 입니다.

이러면 이렇게, 저러면 저렇게 상황에 따라 다른 결정을 내리게 되지요.

 

그리고 하루하루 반복해서 일어나는 일이기 때문에

1, 2 번을 묶어서 본 이 상황 자체가 우리가 다루게 될 '반복문' 입니다.

 

 

 

2_일단 읽어보기

 

설명 01 

weekday = ['월요일', '화요일', '수요일', '목요일', '금요일', '토요일', '일요일']

alive = True

usual = 7



while alive:

    for day in weekday:

        now = 시간을 확인한다.

        if now < usual:

            잔다.

        else:

            일어난다.

 

while 은 ~ 인 동안 을 의미합니다.

for 는 weekday 리스트에서 하나씩 반복한다는 의미입니다.

if 는 만약에 를 의미하고, else 는 아니면~ 을 의미합니다.

 

 

 while, for, if 에 대해 아직 익숙하지는 않지만, 일단 읽어 볼까요?

 

alive 인 동안에:

    weekday 리스트로부터 일주일이 반복되는데:

        현재시간을 확인해서 now 변수에 값을 넣고

        만약에 now가 usual 보다 작다면:

            잔다.

        아니면:

            일어난다.  

 

=제어문에 의해 달라지는 부분=

alive 부터 시작된 문장이 if 에 의해 (잔다.) 또는 (일어난다.) 로 2 가지 경우의 수로 나뉘어집니다.

 

=반복문에 의해 달라지는 부분=

alive 인 동안에, 반복되는 일주일에서 하루하루

 

 

 

3_제어문과 반복문에서 공통되는 부분

 

설명 01 

while 또는 if 또는 for 불리언:

    들여쓰기 되어있는 코드 부분

 

while, for, if 는 공통점이 있습니다.

1. 다음에 불리언 이 나옵니다.    (alive와 now < usual 은 참 / 거짓을 명확하게 나눌 수 있는 불리언입니다.)

2. 불리언 오른쪽에는 콜론( : )이 위치합니다. 

3. 콜론 다음에는 들여쓰기가 되어있습니다.

4. 들여쓰기 된 부분은 한 덩어리로 취급됩니다.

5. 불리언이 True 일 경우, 들여쓰기 된 부분이 실행됩니다.

 

이제 while, for, if 가 각각 어떻게 다른지에 대해 알아봅니다. 

'[일상봇 만들기] 나의 하루하루를 도와줄 친구!' 카테고리의 다른 글

level_03_part_2  (0) 2019.07.03
level_03_part_1  (0) 2019.07.02
level_02_part_2  (0) 2019.06.24
mok_cha  (0) 2019.06.20
level_00_들어가며  (0) 2019.06.20