[wecode 2일차] - 데이터 타입 / string

hyuckhoon.ko·2020년 5월 26일
0

What I learned in wecode

목록 보기
30/109

첫째 날(어제) : ''HTMl/CSS 튜토리얼''완료 (오후 2시 ~ 오후 9시)
둘째 날(오늘) : 'Python 튜토리얼'을 시작

이번 튜토리얼을 진행하며
평소에 갖고 있었던 의문의문들을
하나하나 알아가 보려 한다.



1. 데이터 타입

1. 프로그램 만들기

  • 유저 입력 데이터 값에 대한 자료형 반환 프로그램
from ast import literal_eval
game_status = False
count = 0

# 데이터 타입 판별 함수
def get_type(input_data):
    try:
        return type(literal_eval(input_data))
    except (ValueError, SyntaxError):
        # A string, so return str
        return str

# main 프로그램 시작
while not game_status:
    user_input = input("데이터를 입력하세요 : ")
    result = get_type(user_input)

    if result == int:
        print("자료형은 정수형입니다.")
    elif result == float:
        print("실수형입니다.")
    elif result == bool:
        print("불리언입니다.")
    elif result == str:
        print("문자열입니다.")   
    else:
        print("자료형은 복소수입니다.") 
    count += 1
    
    # 10번 반복 
    if count == 9:
        game_status = True




user_input = input("데이터를 입력하세요 : ")

input 메소드를 사용했으나,"5"와 5를 구별하지 못했다.
그래서 구글링을 통해 입력값의 자료형을 알려주는 함수를 찾았다.

def get_type(input_data):
    try:
        return type(literal_eval(input_data))
    except (ValueError, SyntaxError):
        # A string, so return str
        return str



2. Data types

(= 데이터 타입, 자료형, 변수 타입)

파이썬 자료형은 아래와 같다.

  • integer(정수형)
  • float(실수형)
  • string(문자 및 문자열)
  • boolean
  • complex number

C계열 언어엔 int, float, double 등이 있다.
임베디드 프로그래밍은 아무래도 용량이 적은 메모리를 사용하다보니 C계열 언어와의 조합이 적합하다고 생각한다.

Python에는 double 자료형이 없다.
대신 floatfloat 자료형이 있다.
왜 없는지 구글링 해봤다.


파이썬 자료형 floatfloat은 타 언어에서 사용하는 double자료형의 크기만큼의 데이터를 저장할 수 있다고 한다.
그러니 C언어는 double 자료형이 있고, 파이썬엔 없으니 데이터 손실이 발생할 수 있다는 말은 근거가 없다.



3. Data type을 사용하는 이유?

- 원론적인 이야기

(컴퓨터 언어는 저급언어 ~ 고급언어로 나뉘다.
가독성이 높고 직관적인 코드 작성이 가능한 인간 친화적인 언어일수록 고급언어)

우리가 작성한 코드는 컴파일러를 통해 CPU가 연산을 할 수 있는
기계어로 변환돼야 한다.

유한한 컴퓨터 메모리 자원을 "효율적으로"사용하기 위해
프로세서 및 컨트롤러에 미리 할당을 요청하는 것이다.
"내가 돌리려고 하는 프로그램이 어느 정도의 메모리 용량을 필요로 하는지를
미리 알려줘야 하는 것이다"

데이터 타입이 한개라면,
인간에게는 편하겠지만 어떤 상황에서도 데이터를 담아야 하기에
그 데이터 타입의 크기는 굉장히 굉장히 커야할 것이다.

이처럼 자료형자료형이라는 것은
우리에게 상황에 따라 적절한 크기의 데이터를 선택하라고 제안을 하는 것이다.
또한, 컴파일러가 에러를 발견하고 작동을 멈추듯이
프로그램의 신뢰성을 향상시키는 데에도 일정 부분 역할을 한다.

그런 관점으로 자료형을 바라보면 좋을 것 같다.



4. boolean(bool)에 대한 단상

개인적으로 boolean 자료형이 매우 매우 낯설었던 시기가 있었다.
그건 코드와 아주 자연스럽게 섞이기 때문인 것 같다. 주관적인 느낌이다.

예를들어, 졸라맨 번개 피하기 게임을 만들 때
나 역시 boolean 자료형을 사용하고 있음을 인지하지 못했다.

# 게임 상태를 알려주는 변수(자료형 :bool)
game_status = False

while not game_status:
{
    # 졸라맨이 번개에 맞으면
    if distance < 15:
        game_status = True:
    else:
       if ~~~~:
       (이하 생략)
}       

자료형은 int, float, boolean 등이 있다고 외우는 것보다
사람들이 작성한 코드를 보며 그때그때 사용하는 상황을 익히고
적절한 사용이었는지 생각해보며 내 것으로 만드는 것이 중요할 것 같다


2. String

1. 과제 설명

소녀시대의 노래 "Gee"의 가사를 출력하세요.
가사에서 "Gee" 의 부분을 input 으로 받은 new_gee 변수로 치환해서 출력해주세요.



2. 코드 구현

"Gee"라는 단어가 노래에 있다면,
그때마다 대체하면 되지 않을까? 라는 생각으로 접근해봤다.
string의 메소드인 replace()를 활용하기로 했다.

	song = song.replace(old_word, new_word)

"Gee"라는 단어가 song에 있을 동안만 교체를 반복하려고 한다.


# 바꾸고 싶은 단어
old_word = "Gee"

# 바꿀 단어(사용자 입력)
new_word = input("'Gee를 대체할 단어를 입력하시오 : ")

# 노래 가사를 song에 저장(data type : str)
song = """Uh-Huh! Listen Boy!
My First Love Story
(U-Uh-Huh U-Uh-Huh Yeah)
My Angel(Ha-Ah)& My Girls
(Ha-Ah)My Sunshine Uh Uh Let's Go~

너무 너무 멋져 눈이 눈이 부셔
숨을 못 쉬겠어 떨리는 Girl
Gee Gee Gee Gee
Baby Baby Baby Baby
Gee Gee Gee Gee
Baby Baby Baby Baby

Oh! 너무 부끄러워 쳐다 볼 수 없어
사랑에 빠져서 수줍은 Girl
Gee Gee Gee Gee
Baby Baby Baby Baby
Gee Gee Gee Gee
Be Be Be Be Be Be

(어떻게 하죠) 어떡 어떡하죠
(떨리는 나는) 떨리는 나는요
(두근두근두근두근) 두근두근거려
밤엔 잠도 못 이루죠

나는 나는 바본가봐요
그대 그대 밖에 모르는 바보 그래요
그댈 보는 난

너무 반짝 반짝 눈이 부셔
No No No No No
너무 깜짝 깜짝 놀란 나는
Oh Oh Oh Oh Oh
너무 짜릿 짜릿 몸이 떨려
Gee Gee Gee Gee Gee
Oh! 젖은 눈빛 Oh Yeah~ Oh!
좋은 향기 Oh Yeah Yeah Yeah~

너무 너무 예뻐 맘이 너무 예뻐
첫 눈에 반했어 꼭 짚은 Girl
Gee Gee Gee Gee
Baby Baby Baby Baby
Gee Gee Gee Gee
Baby Baby Baby Baby

너무나 뜨거워 만질 수가 없어
사랑에 타버려 후끈한 Girl
Gee Gee Gee Gee
Baby Baby Baby Baby
Gee Gee Gee Gee
Be Be Be Be Be Be

(어쩌면 좋아) 어쩌면 좋아요
(수줍은 나는) 수줍은 나는요
(몰라몰라몰라몰라) 몰라몰라 하며
매일 그대만 그리죠

친한 친구들은 말하죠
정말 너는 정말 못 말려 바보
하지만 그댈 보는 난

너무 반짝 반짝 눈이 부셔
No No No No No
너무 깜짝 깜짝 놀란 나는
Oh Oh Oh Oh Oh
너무 짜릿 짜릿 몸이 떨려
Gee Gee Gee Gee Gee
젖은 눈빛 Oh Yeah~
좋은 향기 Oh Yeah Yeah Yeah~

말도 못했는걸 너무 부끄러워 하는 난
(U-Uh-Huh U-Uh-Huh Yeah)
용기가 없는걸까(Ha-Ah)
어떻게야 좋은걸까(Ha-Ah)
두근두근 맘 졸이며 바라보고 있는 난

너무 반짝 반짝 눈이 부셔
(Oh~) No No No No No (Ha!)
너무 깜짝 깜짝 놀란 나는
Oh Oh Oh Oh Oh (Oh Oh Oh Yeah~)
너무 짜릿 짜릿 몸이 떨려
Gee Gee Gee Gee Gee (떨려와~)
젖은 눈빛 Oh Yeah~ 좋은 향기
Oh Yeah Yeah Yeah~ (oh Yeah~)

너무 반짝 반짝 눈이 부셔
(눈이 부셔~) No No No No No(No No No~)
너무 깜짝 깜짝 놀란 나는
Oh Oh Oh Oh Oh
(깜짝 깜짝 놀란 나는 Oh Oh Oh~)
너무 짜릿 짜릿 몸이 떨려
Gee Gee Gee Gee Gee (떨려와)
젖은 눈빛 Oh Yeah~
좋은 향기 Oh Yeah Yeah Yeah~
"""
# song(가사)에 old_word 변수가 있을 동안 계속
while old_word in song:
	입력받은 단어로 교체해라.
    song = song.replace(old_word, new_word)
print(song)



노래가 너무 길어서 일부만 캡쳐했다.
"Gee"가
"wecode"로 대체되었음을 확인할 수 있다.

                                    - One step at a time - 

1개의 댓글

comment-user-thumbnail
2020년 5월 26일

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ Gee에서 wecode로 .. 엄청나네요

답글 달기