티스토리 뷰



파이썬의 특징은 가볍고, 간단하다.

이게 무슨 말인즉 하니. 다음 그림을 보자



만약 사람의 키와, 각도, 거리가 구어졌을 때 나무크기를 구하는 문제다.

삼각형의 밑변과 각도가 주어졌을대 한 변의 길이 구하려면 다음과 같다.

변 = 밑변 * tan(각도)


이 공식을 토대로 나무의 크기는 다음과 같이 구할 수 있다.

나무크기 = 사람의 키 + (거리 * tan(각도))

위 공식이 소스 코드라고 생각하는가?아니라고 생각할 수도 있지만 파이썬에서는 위 공식도 소스코드가 된다.


위 공식의 영어을 치환해보자. 위 공식이 소스코드가 아니라고 한 사람이 아래 공식을 소스코드라고 느꼈다면 당신은 간악한 사람?

treeHeight = humanHeight + (distance * tan(degree))

오 뭔가 확실히 코드 같아졌다. 


이제 사용자로 부터 값을 입력받자. 다른 언어와 다르게 각 코드의 끝에 세미콜론(;)이 붙지 않는다.

humanHeight = input("사람의 키(m) : ")

distance = input("나무와의 거리(m) : ")

degree = input("각도(degree) : ")

그냥 저렇게 input이라는 메소드를 쓰면 표준 입력을 받을 수 있다. Java나 C에 비하면 훨씬 간단하다. 


input 메소드를 통해 입력받은 내용은 문자열로 처리된다. 고로 다른 자료형으로 치환해주자.

humanHeight = float(input("사람의 키(m) : "))

distance = float(input("나무와의 거리(m) : "))

degree = float(input("각도(degree) : "))

float()외에 int()도 있고 str()도 있다.


물론 이렇게 하고 나무의 크기를 구하면 원하는 값이 안나온다. 탄젠트를 구할 수 있는 기능각도를 라디안 값으로 바꿔주는 기능을 사용하기 위해서는 math 라는 기능을 import 해주어야 한다.

import math

degree = math.radians(degree)


그리고 화면에 출력 하자

print(treeHeight)


완성 소스코드

'''
Created on 2014. 8. 9.

@author: uyu423
'''

import math


humanHeight = float(input("사람의 키(m) : "))
distance = float(input("나무와의 거리(m) : "))
degree = float(input("각도(degree) : "))
degree = math.radians(degree)

treeHeight = humanHeight + (distance * math.tan(degree))

print(treeHeight)

C나 Java로 수십 줄을 짜야 하는 기능도 Python으로는 간단하게 구현가능하다.


결과



저작자 표시 비영리 변경 금지
신고

'개인공부 > Python' 카테고리의 다른 글

Python03 : 파이썬 객체지향 예제  (0) 2014.08.12
Python02 : 조건문, 반복문, 함수 예제  (0) 2014.08.12
Python01 : 파이썬?  (0) 2014.08.11
프로필사진

Yowu (Yu Yongwoo)

My MBTI type is ENTP. (Of course I do not believe it 100%, but I want to do that) I use Node.js to develop the backend. I use Ubuntu Linux as my development environment, and I love Vim. I am interested in open source and are keen to contribute. I have a bachelor's degree in computer science from Catholic University and now a software engineer at Plating Inc., I spent about 5 years developing and learning, and I am still interested in software development and culture. Recently, I am interested in React, Serverless structure, Domain Design Driven. Sometimes I play drums in the band.