프로그래머가 아닌 이들을 위한 파이썬 3 자습서/거기 누구냐?
입력과 변수
+/-이제는 정말 복잡한 프로그램을 위한 시간이 되었다. 시작한다:
print("정지!")
user_input = input("거기 누구냐?")
print("지나가도 좋다,", user_input)
내가 이것을 실행했을 때, 내 화면에 표시된 것이다:
정지! 거기 누구냐? Josh 지나가도 좋다, Josh
주의: F5 키를 눌러서 코드를 실행하였다면, 파이썬 쉘에서는 저 화면만을 출력할 것이다:
정지! 거기 누구냐?
당신은 파이썬 쉘에 당신의 이름을 넣은 다음, 엔터키를 눌러야 나머지 출력을 볼 수 있다.
당연히 당신이 프로그램을 실행시키면 당신의 화면은 input()
구문 때문에 좀 달라 보일 것이다.. 당신이 프로그램을 실행시키면 당신은 아마 알아챘을텐데 (프로그램을 이미 실행시켰습니다, 그렇죠?) 어떻게 이름을 타이핑하고 엔터키를 눌러야 하는가를 알아챘을 것이다. 그러면 프로그램은 좀 많은 텍스트와 당신의 이름을 출력할 것이다. 이것이 입력의 예제이다. 프로그램은 특정 지점에 도달하면 사용자가 프로그램에서 사용할 데이터를 입력할 때까지 기다린다.
물론, 사용자로부터 정보를 얻는 것은, 정작 그 정보를 넣을 곳(그 곳은 변수가 들어오는 곳이다)이 없다면 그리고 입력한 것이 쓸모가 없다. 이전의 프로그램에서 user_input
이 변수이다. 변수는 데이터 조각을 저장하는 상자와 같다. 변수의 사용 예는 이 프로그램이 보여준다:
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
, and c
가 있다. 두 개의 기본 타입은 문자열와 숫자이다. 문자열은 글자, 숫자, 다른 문자, 기호의 연속체이다. 이 예제에서 b23
과 first_name
은 문자열을 저장하고 있는 변수이다. 이 프로그램에서 Spam
, Bill
, a + b is
, first_name is
, Sorted Parts, After Midnight or
는 문자열이다. 이 글자들은 "
또는 '
로 둘러싸여 있다. 변수의 다른 타입은 숫자이다. 변수는 값을 저장하기 위해 사용된다는 점을 기억하면, 숫자는 인용부호(" 과 ')를 사용하지 않는다. 만약 실제의 값으로 사용하고 싶다면, 반드시 인용부호를 사용하여야 한다.
value1 == Pim
value2 == "Pim"
둘다 보기에는 같아 보이나, 첫 번째 것은 파이썬이 혹시 변수 value1
의 값이 변수 Pim
이 가지고 있는 값과 같은지 확인한다. 두 번째 것은, 파이썬이 문자열 (실제 글자 P
,i
,m
)과 value2
의 값이 같은지 확인한다 (문자열과 ==
에 대한 더 자세한 설명이 필요하면 자습서를 계속 진행하십시오).
과제
+/-좋습니다, 그래서 우리는 이러한 상자를 변수라고 부르고 데이터가 변수에 들어갈 수 있다는 것을 알았습니다. 컴퓨터는 다음과 같은 줄 first_name = "Bill"
을 보고 "문자열 Bill
을 상자 (혹은 변수) first_name
에 집어 넣어라"처럼 읽습니다. 다음에 나오는 구문 c = a + b
를 보고 "a + b
의 합을, 즉 123.4 + 432
을 더한 후 이 값 555.4
를 c
에 넣어라"처럼 읽습니다. 구문의 우측단 (a + b
) 은 계산된 것이고 그 결과를 구문의 좌측단에 있던 변수(c
)에 저장합니다. 이것을 대입이라고 합니다. 그리고 당신은 대입의 등호 표시(=
)와 "동등"을 뜻하는 수학에서의 이해를 혼동하면 안됩니다. (그래서 ==
는 나중에 사용됩니다).
변수의 다른 사용 예제를 봅시다:
a = 1
print(a)
a = a + 1
print(a)
a = a * 2
print(a)
그리고 당연히 여기에 결과가 있습니다:
1 2 4
등호의 양쪽에 동일한 변수가 나타난다 하더라도 (예를 들어, spam = spam), 컴퓨터는 여전히 다음과 같이 읽습니다: "우선 저장할 데이터를 찾고 그 다음 데이터를 저장할 곳을 찾는다."
이번 장을 끝내기 전에 한 개 더 풀어보겠습니다:
number = float(input("숫자를 입력하세요: "))
integer = int(input("정수를 입력하세요: "))
text = input("문자열을 입력하세요: ")
print("number =", number)
print("number is a", type(number))
print("number * 2 =", number * 2)
print("integer =", integer)
print("integer is a", type(integer))
print("integer * 2 =", integer * 2)
print("text =", text)
print("text is a", type(text))
print("text * 2 =", text * 2)
제가 얻은 결과는 다음과 같습니다:
숫자를 입력하세요: 12.34 정수를 입력하세요: -3 문자열을 입력하세요: Hello number = 12.34 number is a <class 'float'> number * 2 = 24.68 integer = -3 integer is a <class 'int'> integer * 2 = -6 text = Hello text is a <class 'str'> text * 2 = HelloHello
number
변수는 float(input())
로 만들어진 반명 text
변수는 input()
로만 만들어진 것에 유의하세요.
input()
함수는 문자를 반환하는 반면, float
함수는 문자에서 숫자를 반환합니다. int
함수는 소숫점이 없는 정수를 반환합니다. 만약 사용자가 소숫점을 입력하길 원한다면 float(input())
함수를 사용해야 하고, 만약 사용자가 정수를 입력하길 원한다면 int(input())
함수를 사용해야 합니다, 그러나 사용자가 문자열을 입력하길 원한다면 input()
함수만 사용하면 됩니다.
프로그램의 후반부는 어떤 종류의 변수를 사용하는지 보여주는 type()
함수를 사용하고 있습니다. 숫자 변수는 int
또는 float
타입으로 보이는데, 이것은 각각
integer(정수)과 floating point(부동소수점)(주로 decimal numbers(소수)에 사용됩니다)의 축약어 입니다 . 문자열 변수는 str
타입으로 보이는데, string의 축약어입니다. int와 float 타입은 수학함수에서 작동할 수 있지만, str 타입은 수학함수에서 작동하지 못합니다. 파이썬이 정수로 된 숫자를 곱할 때 예측되는 일에 주목하세요. 그러나
문자열에 정수를 곱할 때 그 결과는 문자열의 복사본이 숫자만큼 복사될 뿐입니다(예를 들어, text * 2 = HelloHello
).
문자열에서의 연산은 숫자에서의 연산과 다릅니다. As well, 어떤 연산은 숫자에서만 작동하고 (정수와 부동소수점수 모두) 문자열에서 사용하면 오류가 발생됩니다. 인터렉티브 모드에서 볼 수 있는 몇 가지 예입니다.
>>> print("This" + " " + "is" + " joined.") This is joined. >>> print("Ha, " * 5) Ha, Ha, Ha, Ha, Ha, >>> print("Ha, " * 5 + "ha!") Ha, Ha, Ha, Ha, Ha, ha! >>> print(3 - 1) 2 >>> print("3" - "1") Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for -: 'str' and 'str' >>>
다음은 문자열 연산에 대한 표입니다:
연산 | 기호 | 예시 |
---|---|---|
반복 | *
|
"i" * 5 == "iiiii"
|
병합 | +
|
"Hello, " + "World!" == "Hello, World!"
|
예제
+/-Rate_times.py
# 이 프로그램은 속도와 거리 문제를 계산합니다.
print("속도와 시간을 입력하세요")
rate = float(input("속도: "))
distance = float(input("거리: "))
print("시간:", (distance / rate))
Sample runs:
속도와 시간을 입력하세요 속도: 5 거리: 10 시간: 2.0
속도와 시간을 입력하세요 속도: 3.52 거리: 45.6 시간: 12.9545454545
Area.py
# 이 프로그램은 사각형의 둘레와 면적을 계산합니다.
print("사각형에 대한 정보를 계산합니다.")
length = float(input("길이: "))
width = float(input("너비: "))
print("면적:", length * width)
print("둘레:", 2 * length + 2 * width)
Sample runs:
사각형에 대한 정보를 계산합니다. 길이: 4 너비: 3 면적: 12.0 둘레: 14.0
사각형에 대한 정보를 계산합니다. 길이: 2.53 너비: 5.2 면적: 13.156 둘레: 15.46
Temperature.py
# 이 프로그램은 화씨 온도와 섭씨 온도를 변환합니다.
fahr_temp = float(input("화씨 온도: "))
print("섭씨 온도:", (fahr_temp - 32.0) * 5.0 / 9.0)
Sample runs:
화씨 온도: 32 섭씨 온도: 0.0
화씨 온도: -40 섭씨 온도: -40.0
화씨 온도: 212 섭씨 온도: 100.0
화씨 온도: 98.6 섭씨 온도: 37.0
실습
+/-사용자로부터 2개의 문자열 변수와 2개의 숫자 변수에 입력을 받아, 문자열 변수들을 연결하고(공백이 없어야 한다), 다음 줄에 숫자 변수를 곱하는 프로그램을 작성하시오.
string1 = input('문자열 1: ')
string2 = input('문자열 2: ')
float1 = float(input('숫자 1: '))
float2 = float(input('숫자 2: '))
print(string1 + string2)
print(float1 * float2)