[파이썬 프로그래밍 무작정 따라하기] #3-제어문 part 1. 조건문

  • 비교연산자(Comparison operator)
  • 조건문
    • if문
    • if-else문
    • if-else if문
    • 중첩 if문
  • 마무리

안녕하세요 Kaang입니다. 안녕하세요. 프로그램은 항상 동일하게 실행되는건 아닙니다. 상황에 따라 다르게 실행되는데요, 이를 제어문을 통해 제어합니다. 제어문에는 조건문과 반복문이 있습니다. 이번 글에선 조건문을 학습 해보겠습니다. 저번 글과 마찬가지로 Jupyter를 이용해 학습을 진행하겠습니다. 이 글에 사용된 코드를 작성한 Jupyter notebook을 이미 github에 업로드 해두었습니다. 링크를 클릭하시면 확인할 수 있습니다. 따라하시면서 학습해 주세요.

비교연산자

조건문을 공부하기 전에 비교연산자를 학습해야 합니다. 쉬워요.

비교연산자 설명
a>b a가 b보다 크다(초과))
a>=b a가 b보다 크거나 같다(이상)
a<b a가 b보다 작다(미만)
a<=b a가 b보다 작다(이하)
a==b a와 b가 같다
a!=b a와 b가 같지 않다.
a = 2
b = 1

print(a>b)  #True
print(a>=b) #True
print(a<b)  #False
print(a<=b) #False
print(a==b) #False
print(a!=b) #True

이런식으로 a와 b에 값을 대입한 후 비교를 할 수도 있지만 input()함수를 이용하여 사용자로부터 직접 값을 입력받을수도 있습니다.

a = input()
print(a)

input함수에 입력 메세지를 주고 싶다면 아래처럼 하면 됩니다.

a = input("a를 입력하세요:")
print(a)

위의 예제를 입력값을 통해 다시 작성해 봅시다.

a = input("a를 입력하세요:")
b = input("b를 입력하세요:")

print(a>b)
print(a>=b)
print(a<b)
print(a<=b)
print(a==b)
print(a!=b)

조건문

ATM기에서 돈을 출금하는 상황을 생각해봅시다. 돈을 출금하려 했을때, 잔고를 초과하는 금액은 출금할 수 없습니다. 오직 잔고 이하의 금액만 출금할 수 있다. '잔고'와 '출금액'의 비교를 통해 출금`이라는 행위가 결정됩니다.

우리가 사용하는 ATM기도 조건문으로 프로그래밍 되어있습니다. 간단한 ATM기 프로그래밍을 해보겠습니다.

if문

if문의 기본 문법은 아래와 같습니다. 조건이 참(True)면 명령어가 실행되는 구조입니다.

if 조건:
  명령어

if문의 문법에서 주의해야할 사항은 두가지가 있습니다.

  1. 조건 뒤에 콜론(:)을 무조건 적어줘야 합니다.
  2. if문을 작성한 뒤 아래의 명령어 부분은 들여쓰기 해야 합니다. 들여쓰기는 주로 Tab키를 사용하거나 space 4번을 사용합니다. 이 들여쓰기 부분을 정확하게 맞춰야 에러 없이 코드가 실행됩니다.

잔고(balance)가 10000원이고 출금하고자 하는 금액(withdrawl)이 2000원이라고 해봅시다.

balance = 10000  # 잔고 10000원
#withdrawl = input("출금액을 입력하세요:") 를 사용한다면 에러가 발생합니다.
#input()함수를 다시 int()함수로 감싸서 형변환 해줘야 합니다.
withdrawl = int(input("출금액을 입력하세요:")) # 출금액 2000원 입력

if balance >= withdrawl:  #조건 1
    print(str(withdrawl)+"원을 출금합니다.")
    balance = balance - withdrawl #출금액만큼 잔고에서 빼주기
    #들여쓰기가 끝났습니다. 이 이후부터는 if문 밖입니다.

print("잔고: " + str(balance))

1.input()은 모든 입력을 str형태로 받습니다. 그렇기에 if절에서 balance(정수형 데이터)와 withdrawl(문자열 데이터)의 비교를 위해 withdrawl을 int()함수를 통해 정수로 형변환 해 줍니다.

2.print함수 내에서 withdrawl을 str()로 감싼건 다시 한번 형변환을 위해서입니다. withdrawl은 정수(int)이므로 뒷 부분의 ‘을 출금합니다.’와의 문자열 접합(+)을 위해 str()함수를 통해 문자열(string)로 형변환 해주었습니다.

2000원을 출금합니다.라는 문장이 출력됨을 확인할 수 있습니다. 위 문장을 해석해보겠습니다. 먼저 if뒤의 조건을 확인합니다. balance >= withdrawl 이 조건이 참이면 아래 문장이 실행되고 거짓이면 실행되지 않습니다. 10000 >= 2000, 즉 10000은 2000보다 크니까 아래 문장은 실행됩니다. 그럼 만약 잔고보다 큰 금액을 출금하려고 한다면 어떻게 될까요? 출금액으로 잔고보다 큰 20000원을 입력해 봅시다.

balance = 10000  # 잔고 10000원
withdrawl = int(input("출금액을 입력하세요:")) # 출금액 20000원 입력

if balance >= withdrawl:
    print(str(withdrawl)+"원을 출금합니다.")
    balance = balance - withdrawl #출금액만큼 잔고에서 빼주기
    #들여쓰기가 끝났습니다. 이 이후부터는 if문 밖입니다.

print("잔고: " + str(balance))

이 코드를 실행한다면 “~원을 출금합니다.” 출력을 볼 수 없습니다. balance >= withdrawl의 결과가 False이기에 아래의 print문이 실행 되지 않는거죠. 그렇다면 if문이 실행되지 않을 때도 뭔가를 출력해서 사용자에게 정확한 상황을 알려 주면 어떨까요?

if-else문

단일 if문은 조건이 참인 경우만을 커버합니다. 조건이 거짓일때도 실행하고자 하는 문장이 있을 경우 if-else문을 사용합니다.

if 조건:
  명령어 # 조건이 참일때 실행
else:
  명령어 # 조건이 거짓일때 실행

if문과 마찬가지로 else뒤에 콜론(:)을 붙여줘야 하고 명령어 부분은 들여쓰기를 해줘야 합니다.

balance = 10000  # 잔고 10000원
withdrawl = int(input("출금액을 입력하세요:")) # 입력한 금액에 따라 결과가 달라짐

if balance >= withdrawl:
    print(str(withdrawl)+"을 출금합니다.")
    balance = balance - withdrawl
else:
    print("잔고가 부족합니다.")

print("잔고: " + str(balance))

입력한 금액에 따라 결과가 달라짐을 확인할 수 있습니다. 10000원 이상 금액을 입력하면 if부분이 실행되고 10000원 미만 금액을 입력한다면 else부분이 실행됩니다.

if-else if문

여러가지 조건을 사용하고 싶을때 사용하는 구문입니다.

if 조건1:
  명령어 # 조건1이 참일때 실행
elif 조건2:
  명령어 # 조건1이 거짓이고 조건2가 참일때
else:
  명령어 # 모든 조건이 거짓일때 실행

elif는 else if의 줄임말입니다. else부분은 필요 없다면 작성하지 않아도 됩니다.(생략 가능합니다.)

balance = 10000  # 잔고 10000원
withdrawl = int(input("출금액을 입력하세요:")) # 입력한 금액에 따라 결과가 달라짐

if balance > withdrawl:
    print(str(withdrawl)+"원 을 출금합니다.")
    balance = balance - withdrawl
elif balance == withdrawl:
    print("전액 출금합니다.")
    balance = balance - withdrawl
else:
    print("잔고가 부족합니다.")

print("잔고: " + str(balance))

조건 2를 추가하면서 조건 1을 >=(이상)에서 >(초과)로 수정했습니다. 입력값이 10000보다 작을 경우 if절이, 10000일 경우 elif절이, 10000보다 클 경우 else절이 실행되는걸 확인할 수 있습니다. 원하는 만큼 조건을 추가 할 수 있습니다. 원하는 만큼 elif절을 추가 할 수 있단 뜻이죠.

balance = 10000  # 잔고 10000원
withdrawl = int(input("출금액을 입력하세요:")) # 입력한 금액에 따라 결과가 달라짐

if balance > withdrawl:     # 조건 1
    print(str(withdrawl)+"원 을 출금합니다.")
    balance = balance - withdrawl
elif balance == withdrawl:  # 조건 2
    print("전액 출금합니다.")
    balance = balance - withdrawl
elif 0 == withdrawl:        # 조건 3
    print("0원을 출금할 수 없습니다.")
else:
    print("잔고가 부족합니다.")

print("잔고: " + str(balance))

0을 입력하면 “0원을 출금할 수 없습니다.”가 출력되겠죠? 그러나 예상과는 달리 “0원을 출금합니다.”라는 문장이 출력됩니다. if문은 위에서부터 순서대로 실행됩니다. 만약 위쪽의 조건에 해당된다면 아래의 elif나 else는 무시되는 구조이죠. 예시를 들어 보겠습니다.

a=100

if a>1:
  print('조건 1 참')  # 출력됨
elif a>2:
  print('조건 2 참')  # 무시됨

예시를 간단히 하기 위해 else문은 생략했습니다. a는 100이므로 조건1(a>100)과 조건2(a>2) 둘 다 참입니다. 이 경우 둘 다 실행되는 것이 아니라 가장 위에 있는 참인 조건에 해당하는 부분만 실행이 됩니다. 위의 ATM예시를 보자면, 출금액이 0이라서 조건3이 참이긴 하지만 더 위쪽의 조건1이 참이라 이 부분이 실행되고 나머지 부분은 무시되는 것이죠. 그렇기에

  1. 조건을 설정할땐 조건들의 실행 순서를 고려해야 합니다.
  2. 또는 조건들끼리 겹치는 부분이 없도록 배타적으로 설정하는겁니다. 조건 1~3이 주어진다면 단 하나만 참이 되도록 말이죠.

조건 순서를 다시 고려하며 겹치지 않도록 코드를 짜 보겠습니다.

balance = 10000  # 잔고 10000원
withdrawl = int(input("출금액을 입력하세요:")) # 입력한 금액에 따라 결과가 달라짐

if 0 > withdrawl:  #0보다 작은 경우
    print("0원보다 큰 금액만 입력 가능합니다.")
elif 0 == withdrawl:  #0인 경우
    print("0원을 출금할 수 없습니다.")
elif balance > withdrawl:  #0보다 큰 경우
    print(str(withdrawl)+"원을 출금합니다.")
    balance = balance - withdrawl
elif balance == withdrawl:
    print("전액 출금합니다.")
    balance = balance - withdrawl
else:
    print("잔고가 부족합니다.")

print("잔고: " + str(balance))

입력값이

  • 0보다 작은 경우
  • 0인 경우
  • 0보다 큰경우 로 겹치는 경우가 없도록 코드를 작성했습니다.

중첩 if문

if문 내부에 또 if문을 작성할 수 있습니다. 출금이 일어나는 경우에 비밀번호를 물어보는 코드를 추가해 보겠습니다. 비밀번호는 1111이라고 가정하겠습니다.

balance = 10000  # 잔고 10000원
withdrawl = int(input("출금액을 입력하세요:")) # 입력한 금액에 따라 결과가 달라짐

#if문 시작
if 0 > withdrawl:  #조건 1
    print("0원보다 큰 금액만 입력 가능합니다.")
elif 0 == withdrawl:  #조건 2
    print("0원을 출금할 수 없습니다.")
elif balance >= withdrawl: #조건 3
    password = input("비밀번호를 입력하세요:")
    # 중첩 if문 시작
    if password == "1111": #1111이 아니라 "1111"과 비교
        print(str(withdrawl)+"원을 출금합니다.")
        balance = balance - withdrawl
    else:
        print("비밀번호가 일치하지 않습니다.")
    # 중첩 if문 끝
else:
    print("잔고가 부족합니다.")
#if문 끝

print("잔고: " + str(balance))
비밀번호를 맞게 입력했을 경우:
    출금액을 입력하세요:1000
    비밀번호를 입력하세요:1111
    1000원을 출금합니다.
    잔고: 9000
비밀번호를 틀리게 입력했을 경우:
    출금액을 입력하세요:1000
    비밀번호를 입력하세요:2222
    비밀번호가 일치하지 않습니다.
    잔고: 10000

조건 3내부에 비밀번호를 체크하는 if-else문이 삽입된 형태입니다. 비밀번호를 입력받을떄 input()함수가 키보드입력을 문자열로 읽어들이기에 password를 비교할때 1111(정수형)이 아닌 “1111”(문자열)과 비교를 진행해야 합니다.

마무리

어떠셨나요? 조건문과 비교연산자를 학습했습니다. 그리고 사용자로부터 입력을 받는 input()함수도 학습했군요. 이정도만 해도 어느정도 형태를 갖춘 프로그램을 만들수 있습니다. 다음 글에선 또다른 제어문인 반복문에 대해 알아보겠습니다. 이해가 안가거나 궁금하신 부분 있으면 언제든 댓글남겨주세요. 다음 글로 찾아뵙겠습니다. 감사합니다!

[파이썬 프로그래밍 무작정 따라하기] #2-Jupyter 너로 정했다 + 기본 자료형

#목차

  • 개발도구 설치
    • Jupyter 설치하기
      • pip를 통해 설치하기
      • notebook 생성
      • 실행 경로 변경(선택 사항)
  • 드디어 코딩 시작
    • 변수(Variable)
    • 주석(Comment)
    • 자료형(Data Type)
      • 숫자(Number)
        • 정수(Integer)
        • 실수(float)
      • 문자열(string)
    • 자료형간 형변환
  • 마무리

안녕하세요 Kaang입니다. 이번 글에선 개발도구인 Jupyter와 파이썬의 기본 자료형에 대하여 알아보겠습니다. 코딩이 처음인 경우 글이 어렵고 잘 이해가 되지 않을 수 있습니다. 그럴땐 완벽하게 이해하려고 머리를 혹사시키기 보단 이 글의 제목처럼 무작정 따라하며 먼저 몸으로 체득하는걸 추천드립니다.

개발도구 설치

  • 저번 글에서 파이썬 쉘이나 ILDE를 통한 간단한 코딩을 진행해 보았습니다. 하지만 이들은 극히 기본적인 기능만을 제공하기에 대부분의 사람들은 저마다의 개발환경을 셋팅합니다. 생산성에서 차이가 나기 때문이죠.
  • 파이참은 훌륭한 파이썬 개발 도구입니다. 그렇지만 수많은 기능들을 탑재하고 있어 초보자에게 무겁게 다가오는 점도 있습니다. 이 강좌에선 Jupyter를 주 개발환경으로 이용하고자 합니다.

  • 먼저 명령 프롬프트를 실행시켜 보겠습니다. 윈도우 10의 경우 작업표시줄의 검색창에서, 윈도우 7이하버전에서는 시작 -> 실행에서 명령 프롬프트 또는 cmd를 검색해 명령 프롬프트를 실행시켜 주세요.

  • 명령 프롬프트에서 ‘python’을 입력했을때 파이썬 쉘이 실행된다면 ‘환경변수’가 잘 설정되어 있는 경우입니다. #1번 글대로 잘 진행하셨다면 자동으로 ‘환경변수’가 설정됩니다.
  • print('Hello, World!')를 입력하니 잘 작동하네요. 이제 Jupyter 설치를 위해 파이썬 쉘을 빠져나와 다시 명령 프롬프트로 가봅시다. exit()를 입력하거나 창 종료 후 명령 프롬프트를 다시 실행시켜 주세요.

##Jupyter 설치하기

  • Jupyter는 머신러닝이나 데이터분석 용도로 파이썬을 사용하시는 분들이 주로 사용하는 툴로써 가벼우며 코드를 실행하고 수정하기가 간편합니다. 또한 notebook형태로 파일이 공유가 가능합니다. 강의 노트를 jupyter notebook 형태로도 공유할 예정입니다. 무슨 소리인지 모르시겠다구요? 일단 따라와 주세요!

pip를 통해 설치하기

  • pip는 파이썬 패키지를 관리하는 소프트웨어입니다. 최신버전의 파이썬 인스톨러에 포함되어있어 자동으로 설치가 됩니다. 명령 프롬프트에서 아래의 명령어를 입력해 주세요.
pip install jupyter

만약 에러가 발생한다면 명령어를 ‘명령 프롬프트’상에서 입력한건지 확인해주세요. 파이썬 쉘에서 입력하면 pip 명령어가 작동하지 않아요. 또한 pip install은 인터넷이 연결된 환경에서만 작동합니다.

  • 이게 끝입니다! 간단하죠? 설치가 완료되었다면 명령 프롬프트에 아래의 명령어를 입력해 Jupyter를 실행해봅시다.
jupyter notebook
  • 명령어를 입력하면 웹브라우저를 통해 Jupyter가 실행됩니다. 실행이 안 될 경우 웹브라우저 주소창에 http://localhost:8888를 입력하면 됩니다.

notebook 생성

  • Jupyter에선 notebook단위로 코드가 관리됩니다.
  • 우측 New를 클릭하면 노트북을 만들 수 있습니다.
  • Notebooks 아래의 Python 3보이시나요? 저같은 경우에는 이것저것 설치해 놔서 다른 선택지들도 보이네요. Python 3을 클릭해주세요!
  • 새로운 탭에서 위와 같은 화면이 실행됩니다. 다시 http://localhost:8888로 가보면 Untitled.ipynb라는 파일이 생성된 걸 확인할 수 있습니다. ipynp는 Jupyter에서 사용되는 Ipython notebook파일의 확장자 입니다. Untitled.ipynb파일을 체크해보시면 다양한 선택지가 나타납니다.

    • Duplicate: 노트북 복제
    • Shutdown: 노트북 종료
    • 휴지통 아이콘: 노트북 삭제
  • 위쪽 Running탭을 클릭하면 현재 실행되고 있는 노트북을 확인할 수 있습니다.

실행 경로 변경(선택 사항)

  • 건너뛰어도 추후 내용 진행에 지장이 없는 섹션입니다.
  • jupyter notebook명령어를 입력하기전의 경로가 jupyter의 home이 됩니다. 명령 프롬프트를 실행시켰을때의 기본 경로는 C드라이브\Users\사용자명 입니다. 이 경로에서 계속 Jupyter를 사용해도 무방합니다만 본인이 원하는 폴더에서 Jupyter를 실행시키고자 한다면 이 섹션을 참조해 주세요.

  • 아래는 C드라이브 아래 steemit 폴더를 만들고 거기서 Jupyter notebook을 실행하는 명령 흐름입니다.
  • cd: (Change Directory)디렉토리를 이동을 할때 사용됩니다. 한단계 위의 경로로 가고 싶은 경우 cd ..를 입력합니다.
    • cd만 입력하면 현재의 경로를 출력합니다.
  • mkdir: (MaKe DIRectory)디렉토리를 만드는 명령어입니다. 그냥 탐색기에서 원하는 경로에 폴더를 만들어줘도 됩니다.
    • ex.현재 경로에 steemit 디렉토리를 만들고 싶은 경우: mkdir steemit
  • 다른 드라이브로 이동하고 싶은 경우, 해당 드라이브의 문자를 입력
    • ex. D:, E:
  • 위의 명령 흐름으로 Jupyter를 실행시킨 뒤 New를 통해 노트북을 만들어 봅시다. 기본 파일명은 Untitled입니다. Jupyter는 notebook을 자동저장합니다. 자동저장이 안되었다면 File에서 Save and Checkpoint를 선택하면 됩니다.
  • 탐색기에서 C드라이브의 steemit폴더로 들어가면 아까전 생성했던 Untitled노트북이 있는걸 확인할 수 있습니다.






#드디어 코딩 시작

  • 파이썬은 직관적인 언어입니다. 너무 머리아프게 이해하고 암기하려 하기 보다 직관적으로 받아들이는게 더 도움이 되기도 합니다.
  • print(1): 1을 출력하라! 쉽지 않나요?

##변수(Variable)

  • 새로운 Jupyter notebook을 생성해 cell 안에 아래와 같이 입력후 실행시켜주세요.
x = 2
print(x)
  • 세가지 방법으로 실행시킬 수 있습니다.

    • 상단 run cell버튼 클릭
    • 명령어 입력 후 ctrl + enter 눌리기 (Mac 의 경우엔 command + return)
    • 명령어 입력 후 shift + enter 눌리기
  • 첫번째, 두번째는 단일 cell을 실행시키고 마지막 shift + enter는 셀을 실행 시킨 뒤 아래쪽에 새로운 셀을 생성하는 입력입니다.

위와같이 코드가 실행되는걸 확인할 수 있습니다.

  • 변수란 값을 담는 그릇입니다. '변수명'='변수에 저장할 값'의 형태로 사용할 수 있습니다.
  • 위의 코드는 x란 이름의 변수에 2라는 값을 저장하는 코드입니다.
  • 변수는 언제든지 변경 가능합니다. x에 10이란 값을 저장 후 x를 출력해 어떤 값이 저장되었는지 확인해 봅시다.
x = 10
print(x)
  • 새로운 셀을 추가하려면 왼쪽 상단의 + 버튼을 눌러주세요.

##주석(Comment)

  • 주석은 코드에서 무시되는 부분입니다. 코드가 길어지고 복잡해지면 타인이 작성한 코드를 이해하기 힘듭니다. 심지어 본인이 작성한 코드라도 몇달이 지나면 기억이 가물가물해지기도 하죠. 주석은 코드를 더 쉽게 이해할 수 있도록 설명을 작성할 때 사용됩니다. 파이썬에선 #기호를 주석에 사용합니다. #이후에 작성된 코드는 무시됩니다
x = 2 # x에 2 저장
print(x) # 2 출력
print(x+1) # x+1 출력, 2+1=3이므로 3 출력
#print(x+2) 전체 줄이 주석처리되어있으므로 무시됨
print(x+3) # x+3 출력, 2+3=5이므로 5 출력

결과

  • #은 한줄에만 적용됩니다. 한 줄이 아닌 여러 줄을 주석처리하고 싶으면 ‘’‘(따옴표 세개)로 무시하고 싶은 부분을 감싸주면 됩니다.
print(1)
print(2)
''' 
print(3)
print(4)
print(5)
''' 
print(6)
print(7)
  • 위 코드를 실행시켜보면 주석으로 감싸진 부분은 실행 되지 않는걸 확인할 수 있습니다.

현재까지 결과

##자료형(Data Type)

숫자(Number)

정수(Integer)

  • 정수는 ‘양의 정수’, ‘음의 정수’, ‘0’으로 이루어져 있습니다. 간단하게 이해하자면 소수점이 없는 수라고 보셔도 무방합니다. 1,2,100, 0, -1, -20 등 이런게 정수입니다. 한번 정수를 출력해 보겠습니다.
print(1)    # 출력 1
print(2)    # 출력 2
print(100)  # 출력 100
print(0)    # 출력 0
print(-1)   # 출력 -1
print(-20)  # 출력 -20
  • type()이란 함수가 있습니다. (함수에 대해선 추후에 다뤄보겠습니다. 함수가 무엇인지에 대한 호기심도 좋지만 이번 시간에는 사용법에 주목해주세요.) 이 함수 안에 값을 넣으면 그 값의 자료형(data type)을 알려줍니다.
type(1)   # int
  • int는 정수를 의미하는 integer의 약자입니다. type()안에 0을 넣어도, -1을 넣어도 ‘int’가 출력되는걸 확인할 수 있습니다.
x = 3
print(type(x)) # 출력 "<class 'int'>"
print(x)       # 출력 "3"
print(x + 1)   # 덧셈; 출력 "4"
print(x - 1)   # 뺄셈; 출력 "2"
print(x * 2)   # 곱셈; 출력 "6", *는 곱셈 연산자입니다. 프로그래밍에선 x기호 대신 * 기호를 사용합니다.
print(x ** 2)  # 제곱; 출력 "9", **는 제곱 연산자입니다.
  • 여기서 다시 x를 출력하면 어떤 값이 나올까요?
print(x)
  • x+1, x-1, x*2, x**2인 값을 출력했을 뿐 x 값 자체는 변경시키지 않았기에 x값은 그대로 3입니다.
  • x에 1을 더한 값을 다시 x에 저장하려면 아래처럼 다시 변수에 값을 할당 하면 됩니다.
x = x + 1
print(x)
  • x = x +1는 x에 1을 더한 후 그 값을 다시 x에 대입하란 뜻입니다. 이 과정을 줄인 축약연산자가 존재합니다.
x = 3    # x에 3 대입
x += 1   # x = x + 1 과 동일
print(x) # 4 출력
x -= 1   # x = x - 1 과 동일
print(x) # 3 출력
x *= 2   # x = x * 2 과 동일
print(x) # 6 출력
  • 변수를 추가로 할당하여 변수간 연산도 가능합니다.
x=3
y=2
print(x+y)   # 덧셈, "8" 출력
print(x-y)   # 뺼셈, "1" 출력
print(x*y)   # 곱셈, "6" 출력
print(x**y)  # 거듭제곱, "9" 출력
print(x/y)   # 나눗셈, "1.5" 출력
print(x%y)   # 나눗셈 나머지, "1" 출력

실수(float)

  • 프로그래밍에서의 실수는 소수점 이하의 값이 있는 수를 의미합니다. 정수와 동일한 연산들이 가능합니다.
y = 2.5
print(type(y)) # 출력 "<class 'float'>"
print(y, y + 1, y * 2, y ** 2) # 출력 "2.5 3.5 5.0 6.25"

문자열(string)

  • 파이썬은 문자열을 다루기 쉬운 프로그래밍 언어입니다.
x = 'hello'    # 문자열을 표현할 땐 따옴표나
y = "world"    # 쌍따옴표가 사용됩니다; 어떤걸 써도 상관없습니다.
print(x)       # hello
print(y)       # world
print(type(x)) # <class 'str'>; str은 string을 의미합니다.
print(len(x))  # len()은 문자열의 길이(length)를 반환하는 함수입니다.
               # hello는 5글자니까 5를 반환합니다.
hw = x + y     # 문자열간의 + 연산은 문자열을 연결하는 겁니다.
               # 이를 문자열 접합(concatenation)이라고 합니다.
print(hw)      # helloworld
hw2 = x + " " + y
print(hw2)     # 중간에 공백도 함께 접합

자료형간 형변환

  • 자료형간 형변환이 가능한 경우가 있습니다.
x=1              # x에 1 할당. 1은 정수
print(x)         # 1
print(type(x))   # <class 'int'>

x = float(x)     # float(): 실수 자료형으로 형변환
print(x)         # 1.0
print(type(x))   # <class 'float'>

x = int(x)       # int(): 정수 자료형으로 형변환
print(x)         # 1
print(type(x))   # <class 'int'>

x = str(x)       # str(): 문자열 자료형으로 형변환
print(x)         # 1
print(type(x))   # <class 'str'>
  • 제일 마지막 부분의 1은 정수형인지 실수형인지 출력만 해선 구분이 가지 않죠? 그럴땐 type()으로 확인하면 됩니다. 그런데 왜 이런게 필요할까요? 예시를 들어 설명하겠습니다.
x = 10000
print("잔고: " + x)  # TypeError: Can't convert 'int' object to str implicitly
  • 위 코드를 실행하면 에러가 납니다. 문자열(“잔고: “)과 정수(10000)을 더하려(+) 했기 때문이죠. 동일한 자료형으로 맞춰주면 에러가 나지 않습니다.
x = 10000
x = str(x)
print("잔고: " + x)  # 잔고: 10000
  • print함수 내부에서 바로 형변환 함수를 사용할수도 있습니다.
x = 10000
print("잔고: " + str(x))  # 잔고: 10000

마무리

이번글부터 본격적으로 코딩을 시작했군요. 어떻게 보셨나요? 조금 어렵게 느껴질수도 있지만 차근차근 따라오다보면 못할건 아니지 않나요? ㅎㅎ 따라해 보시면서 잘 이해가 안가거나 궁금하신 부분 있으면 언제든 댓글남겨주세요. 다음 글로 찾아뵙겠습니다. 감사합니다!

이전 글 보기

[파이썬 프로그래밍 무작정 따라하기] #1-설치

안녕하세요 Kaang입니다.

이번 글에선 파이썬 개발환경을 셋팅하는 방법을 알아보겠습니다. 윈도우 환경을 기본으로 설명하겠습니다.(mac과 linux에는 기본적으로 파이썬이 설치되어 있습니다. 터미널에서 python을 입력해 보세요!)

다운로드

먼저 파이썬 사이트에 접속해 파이썬 인스톨러를 다운받아봅시다.

https://www.python.org/downloads/

파이썬은 2버전과 3버전이 있습니다. 특별한 이유가 없다면 파이썬3을 다운받는걸 추천드립니다. 파이썬2는 2020년에 지원이 끊길 예정입니다.

현재 파이썬3 최신 안정화 버전인 3.5.2버전을 다운받아주세요. 네모부분을 클릭하게 되면 다운로드가 진행됩니다. 만약 64비트 운영체제를 사용하고 계신다면 화살표 부분을 클릭해주세요.

본인의 pc가 64비트인지 32비트인지 확인하는 방법

그런다음 파이썬 3.5.2 섹션에서 Windows x86-64 executable installer를 클릭해 파이썬 64비트 버전 인스톨러를 다운받아 주세요.

32비트나 64비트나 설치과정은 동일합니다. 다운받으신 인스톨러를 실행시켜주세요.

아래 Add Python 3.5 to PATH 부분을 꼭 체크해주시고 (체크를 하지 않고 진행하면 따로 환경변수를 잡아줘야 합니다. 체크하면 간편해요.)Customize installation을 선택하면 설치경로나 옵션을 변경 할 수 있지만 권해드리지 않습니다. 복잡해요. 그러므로Install Now를 클릭하면 설치가 진행됩니다.

설치가 완료되었습니다.

작업표시줄에 Python 3.5 폴더가 생긴걸 확인할 수 있습니다. IDLE나 Python 3.5를 실행해 주세요.

위: ILDE, 아래: python shell

IDLE(Integrated Development and Learning Environment)가 기능이 좀 더 많긴 하지만 사실 둘 다 잘 안씁니다 ㅎㅎ 더 좋은게 많거든요. 검은색 배경이 더 마음에 들어서 python shell을 가지고 설명을 진행하도록 하겠습니다.

copyright라고 입력해보면 위와 같은 정보가 출력됩니다.

license()라고 입력해보면 위와 같은 정보가 출력됩니다. Guido라는 이름이 눈에 띄네요. Guido는 파이썬 언어를 만든 개발자입니다. Guido가 말하길 크리스마스때 연구실은 닫혀있고 심심해서 시작한게 파이선 언어 만들기였다고 합니다.

파이썬은 1989년, 귀도 반 로썸이 ‘크리스마스에’ 연구실은 닫혀있고 심심해서 만들었다.

help()를 입력하면 도움말이 출력됩니다.

이 상태에서 print를 입력하면 프린트 함수에 대한 설명이 나옵니다. 설명은 복잡하게 보이지만 사용하는건 쉽습니다. 직접 한번 해보죠. 엔터를 치면 help모드에서 빠져나올수 있습니다.

print(1)을 입력하면 1이 그대로 출력되는걸 볼 수 있습니다.

print(1+1)print(9*8)이런것도 됩니다. 계산기대신 파이썬을!

자! 이제 프로그래밍을 해본 사람이라면 모두 출력해봤다는 전설의 헬로월드를 출력해보겠습니다. print('Hello, World!')를 입력하시면 그 결과로 Hello, World!가 출력되는걸 확인할 수 있습니다. 저는 처음에 헬로월드를 출력했을때 가슴속이 벅차오르더라구요.

1은 그냥 print() 안에 넣었는데 왜 Hello world는 따옴표로 감싼 다음 print() 안에 넣는거지?

혹시 이런 의문점이 드셨다면 관찰력에 박수쳐드리고 싶습니다. 오늘은 일단 따라했지만 차근차근 그 의문점 해결해가도록 하겠습니다.

exit()을 입력하면 파이썬 쉘이 종료됩니다. 물론 그냥 X를 눌러서 종료해도 됩니다.

제대로된 강의 첫 글인데 어떠셨나요? 의문점이나 피드백 있으시면 언제든지 댓글로 남겨주세요. 감사합니다 ^^

P.S.

파이썬 홈페이지에서 노란색 버튼을 클릭하면 파이썬 설치 없이 웹브라우저에서 코딩을 즐기실 수 있습니다!

[파이썬 프로그래밍 무작정 따라하기] #0-Intro

Intro

안녕하세요 Kaang입니다. 저번 글에서 말씀드렸던 파이썬 프로그래밍 강의 연재를 시작하고자 합니다. 요즘 코딩이 정말 핫한것 같아요. 학원들도 많이 생겼고 공대에선 컴퓨터공학 전공이 선호도 1위라고 합니다. 제 주변에도 프로그래밍을 공부하고 싶으니 불타는 눈빛으로 책을 추천해달라고 하시는 분들이 계십니다. 책을 추천드린 뒤 얼마 후에 아래처럼 여쭤봅니다.

‘그때 추천드린 책 잘 보고 계세요?’

십중팔구는 포기했다는 답변이 돌아옵니다. 왜 그런걸까요? 압도적인 책의 두께, 어려운 내용등 다양한 이유가 있겠으나 가장 큰 이유는 만들고 싶은 프로그램이 구체적이지 않아서라고 봅니다.

주변에 프로그래밍을 잘하는 친구들을 보면 공통점이 있습니다. 이들은 프로그래밍 책 자체를 공부하기 보단, 본인이 원하는 프로그램을 만들기 위해 책이나 인터넷을 참조합니다.

‘오늘은 윤성우의 열혈 C 프로그래밍 2단원까지 진도 나가야지!’가 아니라 ‘이러이러한 만들고 싶은데 xx부분에서 에러가 나네. 열혈 C 프로그래밍 책 챕터 4에 이 내용 다루고있던데 한번 찾아보자.’가 되는거죠.

실제로는 책보다 구글링을 더 선호합니다. 구글신은 모든걸 알고 계셔요!

만들고 싶은 프로그램없이 ‘요즘 코딩배우면 취업/승진에 도움 될 것 같아서’, ‘남들 다 하니까 불안해서’등의 이유로는 꾸준한 학습이 어렵습니다. 저같은 경우에는 반복 업무(a.k.a. 노가다)를 하기가 너무 귀찮아서 자동화 프로그램을 만들었는데 이때 많이 배운것 같습니다. 필요에 의한 학습이었죠. 개인마다 관심사가 다르기에 만들고 싶은 프로그램도 다를겁니다. 저는 이번 연재를 진행하며 코인거래소 정보를 조회하는 채팅봇을 만들어보고자 합니다.

인스타그램, 핀터레스트등 요즘 핫한 서비스들이 주로 사용하는 파이썬.

언어는 파이썬으로 선택했습니다. 처음 접하는 분들도 쉽게 이해할수있는 직관적인 언어일뿐만 아니라 활용성도 높습니다. 가져다 쓰기만 하면 되는 수많은 파이썬 라이브러리가 있습니다. 강좌는 아래와 같은 컨셉으로 진행하고자 합니다.

  • 비전공자를 대상으로 합니다.
  • 프로그래밍은 1도 모르는 사람들이 읽는다고 가정합니다.
  • 따라만 해도 작동이 되는 코드를 지향합니다.
  • 디테일함이 떨어질수도 있습니다.
  • 그래서 개발자분들 입장에선 쉬울수도 있습니다.

저도 개발자는 아닙니다. 개발자가 아니기에 입문자들의 입장에서 쉽게쉽게 진행하도록 하겠습니다 ^^

감사합니다.

[Review] Future-oriented jump rope by Tangram

The Evolution of a Classic

Alt text

Intro

Have you ever heard about Smart rope? By using persistence of vision, This jump rope shows how many times you jumped on air. Smart rope was successfully raised seed money at Kickstarter last year.

Jump rope is convenient. It doesn’t need expensive fitness equipment and large space. You can work out without partner. It needs only rope and a little space. But jump counting is bothersome. You can count it easily at first. As time goes by, you are out of breath and exhausted so the counting becomes more difficult.

2997, 2998, 2999, 3000, 3100, 3100, ???

When counting makes me confused, I feel irritated. Then I don’t wanna do jumping any more. Some people may say ‘Is counting important?’. For me, It is my daily goal and gives me sense of accomplishment.

I bought this jump rope almost 20 times expensive than normal one. At first, The idea writing numbers by using persistence of vision attracts my attention. It looks like from future world. By smart rope, I would be set free from counting. Not only this function, It’s design looks cool. In fact, the name of manufacturer is Tangram Design Lab!

Smart Rope

Let’s see the product.

  • I like this sophisticated package. Left one is silicon handle grips.
  • There are three color types: chrome, gold, black.
  • Also they provide free app.
  • In this pouch, you can find jump rope and user manual.
  • User manual is written in 4 languages (Korean, English, Chinese, Japanese).
  • I bought chrome type. You can see led embedded rope in middle.
  • LED shows acceptable visibility at daytime.
  • LED shows high visibility at night.
  • Power button
  • When you open this button, There is a charging port.
  • You can charge this jump rope with micro USB. Most of android smartphone use micro USB for charging.
  • In manual description:
    • Full charge in 2 hours
    • 36 hours of use
  • If you use this jump rope within 1 hour per day, you can use it without charging during one month.
  • Smart rope is connected to smartphone by Bluetooth
  • I put silicon handle grips on smart rope. It makes better grip.
  • Successfully connected.

Smart Gym pro

  • This is smart Gym app for android. It automatically find smart rope in near.
  • You can synchronize the app with other health app like google fitness, UA Recode, MapMyFitness. Also it supports ios health. It would be good choice if you have apple watch.

English app is also available. There are 6 main functions

  1. Basic count
  2. Interval training
  3. Awards
  4. Competition
  5. Leaderboard
  6. History

1. Basic count

  • It shows basic jump count, workout time and burned calories.

2. Interval training

  • It provides multiple interval training program for each level.

3. Awards

  • Level 1 Basic
  • You can get awards on ‘jump’, ‘interval training’ and ‘competition’.

4. Competition

  • If you connect your facebook, you can make competiton with your facebook friends.

5. Leaderboard

  • I jumped 503 times and ranked at 7370

6. History

  • Your work out history.
  • It shows total jump count, workout time and burned calories in specific period.

Pros and Cons

Pros

  • Forget countings.
  • Focus on working out itself.
  • When using at night, people shows special interests.
  • Armband free

you don’t have to attach smartphone to body for measuring jump. It will be recoded automatically by Smart Gym via bluetooth.

Cons

  • Price
  • Hard to set LED position.
  • Breakdown concern

You can set the position of LED number by controlling left grip(eye-level or ground-level). But it is not delicate. Also Led embedded part hits ground on every jump. There is a concern for breakdown. Above all things, price is the biggest barrier to buy.

Rating

  • Design: ★★★★☆ Simple and Sophisticated
  • Feature: ★★★☆ Eye-catching, but not perfect
  • Price: ★☆ If you are rich, It doesn’t matter
  • Recommendation: ★★ Smart Gym app is still unstable
  • Overall: ★★☆ Not bad if you are willing to pay.

If you have any questions, please reply on this post.

Thanks :)