본문으로 이동

일반인을 위한 파이썬 지침서/누가 거기에 가지?

위키책, 위키책

입력과 변수

[+/-]

이제 나는 정말 복잡한 프로그램을 다룰 때라고 느낀다.

print "Halt!"
s = raw_input("Who Goes there? ")
print "You may pass,", s

위 코드를 실행하면 다음과 같이 나온다.

Halt!
Who Goes there? Josh
You may pass, Josh

물론 여러분이 그 프로그램을 실행시킬 때 여러분의 화면은 raw_input 서술문 때문에 다르게 보일 것이다. 여러분이 그 프로그램을 실행시킨다면 여러분은 아마도 어떻게 여러분의 이름을 입력하고 그리고 엔터를 눌러야만 하는가를 깨달았을 것이다.(설마 프로그램은 실행시켰겠지요? 그렇지요?) 그러면 그 프로그램은 약간의 텍스트와 또한 여러분의 이름을 출력해 낼 것이다. 이것은 입력의 예이다. 그 프로그램은 어떤 지점에 다다르면 그리고 사용자가 어떤 자료를 입력해주기를 기다린다. 그 자료는 나중에 프로그램이 사용하게 된다.

물론, 우리가 그 정보를 두어야 할 어떤 곳도 없다면 사용자로부터 얻는 정보가 쓸모가 없을 것이다. 이곳이 바로 변수가 있는 곳이다. 이전의 프로그램에서 s는 변수이다. 변수는 여러 조각의 데이터를 담을 수 있는 상자와 같은 것이다. 여기에 변수의 예를 보여주는 프로그램이 있다.

a = 123.4
b23 = 'Spam'
first_name = "Bill"
b = 432
c = a + b
print "a + b is", c
print "first_name is", first_name
print "Sorted Parts, After Midnight or",b23

그리고 여기에 그 출력이 있다.

a + b is 555.4
first_name is Bill
Sorted Parts, After Midnight or Spam

변수는 데이터를 저장한다. 위의 프로그램에서 변수는 a, b23, first_name, b, c이다. 기본적인 형 두 가지는 문자열과 숫자이다. 문자열은 문자들, 숫자 그리고 다른 문자들의 연속열이다. 이 예제에서 b23first_name은 문자열을 담고있는 변수이다. Spam, Bill, a + b is, first_name is는 이 프로그램에서 문자열이다. 문자는 " 또는 '으로 둘러 쳐진다. 다른 타입의 변수는 숫자이다.

우리는 이러한 변수라 부르는 상자와 또한 다른 변수로 갈 수 있는 데이터를 가지고 있다. 컴퓨터는 first_name = "Bill"와 같은 라인을 보고서 그것을 읽기를 ‘Bill이라는 문자열을 first_name라는 상자(혹은 변수)에 집어 넣어라’라고 읽을 것이다. 그리고는 c = a + b라는 서술문을 보게되고 읽기를 ‘a + b 혹은 123.4 + 432 또는 555.4c에 집어 넣어라'라고 읽을 것이다.

여기에 변수 사용법에 대한 또 다른 예제가 있다.

a = 1
print a
a = a + 1
print a
a = a * 2
print a

그리고 물론 이것이 그 출력이다.

1
2
4

양쪽 모두에서 똑같은 변수임에도 불구하고 컴퓨터는 여전히 그것을 다음과 같이 읽는다. 먼저 저장해야할 데이터를 찾아라 그리고 데이타가 어디로 가는지를 찾아라.

이 장을 떠나기 전에 프로그램을 하나 더 살펴보자.

num = input("Type in a Number: ")
str = raw_input("Type in a String: ")
print "num =", num
print "num is a ",type(num)
print "num * 2 =",num*2
print "str =", str
print "str is a ",type(str)
print "str * 2 =",str*2

내가 맞이한 출력은 다음과 같다.

Type in a Number: 12.34
Type in a String: Hello
num = 12.34
num is a  <type 'float'>
num * 2 = 24.68
str = Hello
str is a  <type 'string'>
str * 2 = HelloHello

numinput문으로 반면에 strraw_input문으로 할당되고 있음을 주목하라. raw_input은 문자열을 반환하는 반면에 input은 숫자를 반환한다. 사용자가 숫자의 형태로 입력하기를 원한다면 input을 사용하라. 그러나 사용자가 문자열의 형태로 입력하기를 원한다면 raw_input을 사용하라.

프로그램의 후반부에서 type를 사용하는데 그것은 변수의 형을 말해 준다. 숫자들은 정수형 <cocde>int이거나 소수형 float이다.(그것들은 각각 integer 와 floating point의 약자이다.) 문자열은 string이다. 언제 어떻게 파이썬이 하나의 수치를 정수로 곱셈을 해야 예상한 바가 일어나는지를 또한 주목하라. 그렇지만 하나의 문자열이 정수에 의하여 곱하여졌을 때 그 문자열은 자신의 많은 복사본이 더해지게 된다.

다시 말하면 다음과 같다.

str * 2 = HelloHello

예제

[+/-]
# Rate_times.py
# This programs calculates rate and distance problems
print "Input a rate and a distance"
rate = input("Rate:")
distance = input("Distance:")
print "Time:",distance/rate

샘플을 실행하면 다음과 같이 나온다.

> python rate_times.py
Input a rate and a distance
Rate:5
Distance:10
Time: 2
> python rate_times.py 
Input a rate and a distance
Rate:3.52
Distance:45.6
Time: 12.9545454545
# Area.py
# This program calculates the perimeter and area of a rectangle
print "Calculate information about a rectangle"
length = input("Length:")
width = input("Width:")
print "Area",length*width
print "Perimeter",2*length+2*width

샘플을 실행하면 다음과 같이 나온다.

> python area.py
Calculate information about a rectangle
Length:4
Width:3
Area 12
Perimeter 14
> python area.py
Calculate information about a rectangle
Length:2.53
Width:5.2
Area 13.156
Perimeter 15.46
# temperature.py
# Converts fahrenheit to celcius
temp = input("Farenheit temperature:")
print (temp-32.0)*5.0/9.0

샘플을 실행하면 다음과 같이 나온다.

> python temperature.py
Farenheit temperature:32
0.0
> python temperature.py
Farenheit temperature:-40
-40.0
> python temperature.py
Farenheit temperature:212
100.0
> python temperature.py
Farenheit temperature:98.6
37.0