파이썬 기초(Basics)
이 장에서는 주석, 리터럴 상수, 숫자(numbers), 문자열(string), 변수(variables), 수식(expressions), 들여쓰기(indentation), 연산자(operators), 연산 우선순위(operator precedence)에 대해서 배운다.
주석
소스 코드에서 프로그램을 설명하는 용도로 사용되며 해시 문자 #
기호를 사용한다. #
가 붙은 줄 안에서 #
뒤로 적힌 모든 내용들은 명령어로 인식하지 않는다. 다음 문장에서 #
뒤에 적힌 문장 # 여기에 적힌 내용들은 명령어로 인식하지 않고 무시한다.
은 프로그램에 아무런 영향을 끼치지 않는다. 이 문장은 단지 코드를 읽는 사람에게 정보를 주기 위한 용도이다.
print("hello") # 여기에 적힌 내용들은 명령어로 인식하지 않고 무시한다.
hello
리터럴 상수
리터럴(literal)이란 "글자 그대로"란 의미로 리터럴 상수란 눈에 보이는 그대로 객체로 인식한다는 뜻이다. 예를 들면 숫자 100
은 파이썬이 정수형(int
) 숫자 100
으로 인식하고 1.234
는 부동소수형(float
) 숫자로 인식한다. 리터럴 상수형으로는 문자열, 정수, 부동소수점, 복소수, 바이트형이 있다.
리터럴 정수
리터럴 정수형 예제로
여기서 0o177
표현식은 첫번째 문자는 숫자 0
이고 두번째 문자 o
는 영어 소문자이다. 마찬가지로 0b100110111
, 0xdeadbeef
에서도 각각 첫번째 문자는 숫자이고 두번째는 영어 소문자이다. 0o(8진수)
형식은 8진수를 나타내는 것이고 0b(2진수)
, 0x(16진수)
는 각각 2진수, 16진수를 나타내는 것이다.
리터럴 부동소수점
다음은 리터럴 부동소수점을 표현하는 방법이다.
3.14 10. .001 1e100 3.14e-10 0e0
여기서 3.14e-10
는 3.14 * 10 ** (-10)
을 의미하는 것이다. 즉 을 의미한다.
리터럴 문자열
"hello"
, '안녕'
과 같이 큰 따옴표 "
또는 작은 따옴표 '
로 둘러싸인 문자열은 파이썬 문자열형(str
)로 인식한다. 여기서 주의할 것은 따옴표로 둘러싸인 숫자 "100"
은 숫자가 아니라 문자열로 인식한다는 것이다. 뿐만아니라 작은 따옴표 또는 큰 따옴표를 연속으로 3개를 사용하여 문자열을 만들 수 있다. 예를 들면
특히 """
또는 '''
을 사용하면 엔터를 쳐서 여러 줄에 걸쳐서 문자열을 만들 수 있다.
리터럴 허수
리터럴 허수는 부동소수점에 j
또는 J
를 붙여서 만든다.
3.14j 10.j 10j .001j 1e100j 3.14e-10j
리터럴 바이트형은 사이트 https://docs.python.org/3.6/reference/lexical_analysis.html#string-and-bytes-literals를 참조한다.
type(100)
int
type(1.234)
float
type("hello")
str
type('안녕')
str
type("100")
str
type(x)
함수는 x
가 어떤 유형의 객체인지를 알려준다.
숫자
파이썬 숫자형은 정수형(int
), 부동소숫점형(float
) 및 복소수형(complex
) 세 가지가 있다.
정수형
정수형 숫자의 크기는 무제한이다.id1 정수형을 만드는 방법은 리터럴 상수형에서 본 것과 같이 리터럴 정수를 사용하는 방법과 정수형 객체를 만드는 int(x)
함수를 사용한 방법이 있다. int(100)
은 정수형 100을 의미하고 int(1.56)
및 int(-1.56)
은 정수 1
과 -1
을 각각 반환한다. 즉, x
부터 0쪽 방향으로 정수들 중 x
에 가장 가까운 정수를 반환한다. 또한 숫자 대신 문자열을 사용할 수 있다. 즉, int('1234')
은 정수 1234
을 의미한다. 이 때 문자열은 정수 문자열만 가능하다.
id1. https://docs.python.org/3.6/library/stdtypes.html#numeric-types-int-float-complex ↩
100, 1, -1
1234
int('a1', base=16)
과 같이 사용하면 16진수 a1
을 나타내는 것으로 10진수로 161
을 나타낸다.
int('A1', base=16)
161
부동소수점형
부동소수점형의 크기는 시스템에 따라 달라질 수 있고 sys.float_info
을 통해서 값을 알 수 있다. 정수형과 마찬가지로 리터럴 상수형 형식 1.234
와 같이 소숫점을 이용한 숫자로 만들 수도 있고 float(x)
와 같이 부동소수점형 함수를 이용해서 만들 수 있다. x
는 리터럴 부동소수점형 및 문자열이 될 수 있다.
print(float(1.234), float('1.234'), sep=', ')
1.234, 1.234
복소수형
복소수형은 리터럴 복소수형 또는 complex(re, im)
함수를 통해 만들 수 있다. 여기서 re
는 실수부분, im
은 허수부분의 부동소수점형을 넣으면 된다. 예를 들면 1 + 2j
복소수를 만들고 싶으면 complex(1, 2)
라고 하면된다. 여기서 j
는 허수부분을 나타내는 표시이다. 수학 서적에서는 i
로 표시하기도 한다. 또는 간단히 1 + 2j
와 같이 써도 된다. 그런데 2
와 j
는 반드시 붙여 써야 한다.
(1+2j)
x + complex(2, 3)
(3+5j)
x + 3j
(1+5j)
문자열
문자열은 리터럴 상수형에서 살펴본 바와 같이 작은 따옴표, 큰 따옴표로 둘러싸면 문자열이 된다. 또는 str(x)
함수를 이용해서 문자열을 만들 수 있다. str(x)
는 x
객체의 __str()__
함수가 구현되어 있으면 x.__str()__
값이 반환되고 그렇지 않으면 repr(x)
값이 반환된다.id_str
id_str. https://docs.python.org/3.6/library/stdtypes.html#str ↩
포멧(format) 함수
문자열을 생성하려고 할 때, 종종 다른 정보들을 포함하여 생성하고 싶을 때가 있다. 이럴 때 format()
함수를 이용해서 문자열을 편리하게 다룰 수 있다.
괄호 { }
안의 숫자는 format()
에 있는 인수의 인덱스를 나타낸다. 인덱스는 0부터 시작한다. { }
안의 숫자가 없으면 인자의 순서대로 들어가게 된다.
괄호 {}
안에 공백이 있으면 안된다. 표시되는 형식을 더 세밀하게 조정할 수 있다.
0.333
___hello___
윤대기는 "파이썬 한 입" 책을 만들고 있다.
탈출 문자열(escape sequence)
'What's your name?'
과 같이 작은 따옴표 '
로 만들어진 문자열 안에 작은 따옴표가 있으면 문자열이 어디서 끝나는지를 명확하게 알 수 없게 되므로 에러를 낸다.
'What's your name'
File "<ipython-input-5-d10fcea8627e>", line 1
'What's your name'
^
SyntaxError: invalid syntax
이 때는 "What's your name?"
과 같이 큰 따옴표를 사용해도 되지만 탈출 문자 \
를 이용해서 작은 따옴표를 사용하면서도 문자열 안에 작은 따옴표 '
를 넣을 수 있다. 즉, \'
와 같이 작은 따옴표 앞에 역슬래스 \
를 붙임으로 작은 따옴표를 문자열을 만드는 문자가 아니라고 인식하게 한다. 마찬가지 방법으로 탈출문자와 큰 따옴표를 사용함으로 큰 따옴표를 문자열에 포함시킬 수 있다.
'What\'s your name'
"What's your name"
역슬래시 자체를 문자열에 포함시키려면 역슬래시를 두 번 \\
사용하면된다. \n
문자열(new line)을 이용하면 이 문자열이 위치한 곳에서 엔터를 치는 효과를 얻을 수 있다. 즉 \n
뒷부분부터 새로운 줄에 표시되게 한다.
print("첫번째 줄입니다.\n여기부터는 두번째 줄입니다.")
첫번째 줄입니다.
여기부터는 두번째 줄입니다.
\t
문자열을 이용하면 키보드에서 탭(Tab) 키를 누른 효과를 낼 수 있다.
print("하나\t둘\t셋")
하나 둘 셋
문자열에 대한 자세한 사용법은 앞으로 나올 클래스 부분에서 다루게 될 것이다.
변수
변수는 어떤 값을 담는 바구니라고 생각할 수 있다. 변수 이름을 만드는 규칙은 첫문자는 반드시 알파벳 또는 밑줄(_
)을 사용해야하고, 두번째 문자부터는 알파벳 또는 숫자 또는 밑줄이 나올 수 있다. 변수 이름으로 공백문자는 포함할 수 없으며, 첫 문자로 숫자가 나오면 안된다. 또한 대문자, 소문자를 다르게 인식을 하기 때문에 School
와 school
은 다른 변수 이름이 된다. 알파벳 대신에 유니코드도 가능하다. 즉 한글 변수도 사용할 수 있다.
12345
첫문자 밑줄 가능
학교
대문자 School과 다른 변수
문자 사이에 밑줄 가능
다음은 모두 잘못된 변수 이름이다.
35name = '첫문자로 숫자가 올 수 없다'
File "<ipython-input-20-9d7f89eb01fd>", line 1
35name = '첫문자로 숫자가 올 수 없다'
^
SyntaxError: invalid syntax
여기서 첫 문자로 숫자 3
을 변수이름으로 사용할 수 없다. 첫 문자는 반드시 알파벳 또는 밑줄이 와야 한다.
m$ = 100
File "<ipython-input-22-d62daef9b650>", line 1
mor$ = 100
^
SyntaxError: invalid syntax
특수 문자 $
를 변수에 사용할 수 없다.
class = '키워드'
File "<ipython-input-23-c0af7fbbd350>", line 1
class = '키워드'
^
SyntaxError: invalid syntax
파이썬 키워드id_keyword 즉, 파이썬이 미리 예약해둔 문자열은 변수로 사용할 수 없다. 다음은 파이썬 키워드들이다.
id_keyword. https://docs.python.org/3.6/reference/lexical_analysis.html#keywords ↩
수식(expression)
수식이란 함수 호출, 변수, 연산자와 상수들의 조합이다. 파이썬 인터프리터는 수식을 평가해서 결과값을 얻고 표시한다.
들여쓰기
다른 언어(C, C++, Java
등)와 다르게 파이썬은 들여쓰기를 특별하게 인식한다. 들여쓰기를 통해서 같은 블록안에 있다는 것을 표시한다. 다음과 같이 들여쓰기를 하면 에러가 난다.
File "<ipython-input-14-b3cf98a014a3>", line 2
print('no!') # 에러
^
IndentationError: unexpected indent
들여쓰기가 필요한 경우는 if
, while
또는 함수를 정의할 때와 같이 새로운 블록이 필요할 때이다. 나중에 나오겠지만 if
문을 예를 들면
(1), (2)
는 같은 크기만큼 들여쓰기를 했으므로 같은 블록 안에 있는 걸로 인식한다. (3), (4)
도 마찬가지로 같은 블록으로 인식한다.
연산자
연산자(operator)란 계산을 하기 위해서 사용되는 특별한 문자열이다. 예를 들어 2 + 3
에서 +
는 덧셈 연산자라고 부른다. 2
와 3
은 피연산자(operand)라고 한다.
연산자 | 설명 |
---|---|
+ (덧셈 연산자) |
x + y 는 x 와 y 를 더한다. 3 + 5 는 8 을 반환하고 'a' + 'b' 는 'ab' 를 반환한다. |
- (뺄셈 연산자) |
x- y 는 x 에서 y 를 뺀다. 첫 번째 피연산자가 주어지지 않으면, 0으로 간주된다. -5.2 는 음수를 표현한다. 50 - 24 는 26 을 반환한다. |
* (곱셈 연산자) |
두 숫자의 곱 혹은 지정된 숫자만큼 반복된 문자열을 반환한다. 2 * 3 은 6 을 반환하고 'la' * 3 은 lalala 를 반환한다. |
** (거듭제곱 연산자) |
x ** y 는 x 의 y제곱을 반환한다. 3 ** 4 는 81 을 반환한다 (이 값은 3 * 3 * 3 * 3 과 같다). |
/ (나눗셈 연산자) |
x / y 는 x 를 y 로 나눈 부동소수점형 숫자를 반환한다. |
// (몫 연산자) |
x // y 는 x / y 해서 나온 값보다 작거나 같은 정수 중 최대 정수를 반환한다. 연산자와 수식 13 // 3 은 4 를 반환한다. -13 // 3 은 -13 / 3 = -4.333333333333333 보다 작거나 같은 정수 중 최대정수인 -5 를 반환한다. |
% (나머지 연산자) |
x 를 y 로 나눈 나머지를 반환한다. 13 % 3 은 1 을 반환한다. -25.5 % 2.25 는 1.5 를 반환한다. 나머지의 부호는 두 번째 피연산자의 부호를 따른다. 항상 x == (x//y)*y + (x%y) 의 관계식을 만족한다. |
<< (왼쪽 시프트 연산자) |
x << n 은 정수 x 의 이진수 표현에서 n 비트 수 만큼 왼쪽으로 이동을 시키고 뒤의 공간은 0 으로 채운다. n 은 음이 아닌 정수이다.(모든 숫자는 메모리상에서 0 또는 1 의 비트로 구성된 이진수로 표현된다). 2 << 2 는 8 을 반환한다. 2 는 이진수로 10 으로 표현되고, 이것을 왼쪽으로 2 비트 시프트 연산하면 이진수 1000 이 되어, 이것을 정수로 표현하면 8 이 된다. x << n 은 x * 2 ** n 하는 것과 같다. |
>> (오른쪽 시프트 연산자) |
x >> n 은 정수 x 의 이진수 표현에서 n 비트 수 만큼 오른쪽으로 이동을 시키고 앞의 공간은 음수이면 1 , 양수이면 0 비트로 채운다. 11 >> 1 은 5 를 반환한다. 11 은 이진수로 1011 로 표현되고, 이것을 오른쪽으로 1비트 시프트 연산하면 이진수 101 이 되고, 이것을 정수로 표현하면 5 가 된다. x >> n 은 x // 2 ** n 과 같다. |
& (이진수 AND 연산자) |
이진수 AND 연산이란 숫자를 이진수로 표현했을 때, 같은 자리의 숫자가 동시에 1 일 때만 1 이고 그렇지 않으면 0 이 되는 것을 의미한다. 따라서 5 & 3 은 1 을 반환한다. 왜냐면 5 와 3 은 이진수로 각각 101 , 011 이므로 끝자리만 같은 1 이고 나머지는 다른 숫자이므로 이진수 001 , 즉 십진수 1 이 된다. |
| (이진수 OR 연산자) | 이진수 OR 연산이란 숫자를 이진수로 표현했을 때, 같은 자리의 숫자가 적어도 하나가 1 이면 1 이고 둘 다 0 이면 0 이 되는 것을 의미한다. 5 | 3 은 7 을 반환한다. 왜냐면 5 와 3 은 이진수로 각각 101 , 011 이므로 같은 자리에 1 이 적어도 하나씩 있으므로 이진수 111 이 되고 십진수로는 7 이 된다. |
^ (이진수 XOR 연산자) |
이진수 XOR 연산값을 반환한다. x ^ y 는 x , y 를 이진수로 표현했을 때 같은 자리의 수가 둘 다 0 또는 둘 다 1 이면 결과값은 0 이고 그렇지 않으면 1 이 된다. 따라서 5 ^ 3 은 6 을 반환한다. |
~ (이진수 반전 연산자) |
숫자 x 의 이진수 반전 연산값 -(x+1) 을 반환한다. ~5 는 -6 을 반환한다. 자세한 사항은 아래 2의 보수 또는 위키 백과: 2의 보수 을 읽어 보기 바란다. |
< (작음) |
x < y 는 x가 y보다 작은지 여부를 반환한다. 모든 비교 연산자는 True (참) 또는 False (거짓)을 반환한다. 각 반환값의 첫글자는 대문자라는 점에 유의하자. 5 < 3 는 False 를 반환한다. 3 < 5 는 True 를 반환한다. 다음과 같이 여러 숫자에 대해 한꺼번에 비교 연산을 수행할 수 있다. 3 < 5 < 7 은 True 를 반환한다. |
> (큼) |
x 가 y 보다 큰지 여부를 반환한다. 5 > 3 은 True 를 반환한다. 만약 두 피연산자가 모두 숫자라면, 같은 숫자형으로 변환된 후 크기를 비교한다. 피연산자가 숫자형이 아닐 경우, 항상 False 를 반환한다. |
<= (작거나 같음) |
x 가 y 보다 작거나 같은지 여부를 반환한다. x = 3; y = 6; x <= y 는 True 를 반환한다. |
>= (크거나 같음) |
x 가 y 보다 크거나 같은지 여부를 반환한다. x = 4; y = 3; x >= 3 는 True 를 반환한다. |
== (같음) |
두 객체가 같은지 여부를 반환한다. x = 2; y = 2; x == y 는 True 를 반환한다. x = 'str'; y = 'stR'; x == y 는 False 를 반환한다. x = 'str'; y = 'str'; x == y 는 True 를 반환한다. |
!= (같지 않음) |
두 객체가 같지 않은지 여부를 반환한다. x = 2; y = 3; x != y 는 True 를 반환한다. |
not (논리 NOT 연산자) |
x 가 True 라면, False 를 반환한다. x 가 False 라면, True 를 반환한다. x = True; not x 는 False 를 반환한다. |
and (논리 AND 연산자) |
x and y 를 계산할 경우, x 가 False 이면 False 를 반환하며 True 이면 y 와의 and 연산값을 반환한다. x = False; y = True; x and y 를 계산할 경우, x 가 False 이므로 y 값에 관계없이 x and y 의 값은 False 임이 자명하므로, x 의 값이 False 임이 확인되는 즉시 곧바로 결과값 False 가 반환되며 이때 y 의 값은 계산되지 않는다. 이것을 단축 계산(short-circuit evalulation)이라고 부른다. |
or (논리 OR 연산자) |
x 가 True 이면 True 가 반환되며, False 이면 y 와의 or 연산값을 반환한다. x = True; y = False; x or y 는 True 가 반환된다. 여기서도 위와 같이 단축 계산이 적용된다. |
수식 연산자 단축
변수에 숫자를 연산하여 다시 같은 변수에 넣는 것은 많이 사용된다.
이러한 연산을 단축하여 계산할 수 있도록 다음과 같이 사용할 수 있다.
즉, 변수 연산자= 수식
와 같이 사용할 수 있다. 이것은 변수 = 변수 연산자 수식
의 연산을 수행하게 된다.
단축 연산을 할 때는 오른쪽 수식이 먼저 계산되고 그 계산된 값과 단축 연산을 한다.
x = 1.0
위에서 x = x / 3 * 2
와 같이 계산하는 것이 아니라, 오른쪽 수식을 먼저 계산하고 다음에 단축 연산 =/
을 한다. 즉 x = x / (3 * 2)
와 같이 계산한다.
2의 보수
컴퓨터에서 음의 정수 를 정의할 때 에 대한 2의 보수로 정의한다. 2의 보수란 어떤 정수 가 주어지고 이 충분히 클 때 이 되도록하는 수 를 의 2의 보수라고 정의한다. 여기서 정수 를 8비트 이진수로 표현했을 때, 이면 충분하다. 가령 8비트 x = 0000 0101
즉, 10진수 5
일 때 을 만족하는 수 를 의 2의 보수라고 한다. 8비트 연산에서 은 1 0000 0000
으로 하위 8비트 0000 0000
만 사용하고 상위 비트 1
은 버린다. 그러므로 으로 간주한다. 따라서 해서 구할 수 있는 것이다. 그러므로 y = 1111 1011
이 된다. 이것을 구하는 다른 방법으로, 의 각 비트의 숫자에서 0은 1로, 1은 0으로 바꾸고, 바뀐 숫자에 1을 더하면 된다. 만일 1을 더해서 나온 숫자가 8비트를 넘어가면 하위 8비트만 사용한다. 즉, 이진수 반전연산 ~x
로 표현하면 ~x + 1
이 -x
가 되는 것이다.
다음은 -5
의 8비트 이진수 표현법을 나타낸 것이다. 먼저 5의 이진수 반전연산을 한다.
0000 0101 -> 1111 1010
다음으로 1
을 더해서 -5
의 이진수 표현법을 얻는다.
이진수 반전 연산 ~x
은 ~x + x + 1 = 1 0000 0000(2진법) = 0
이 되므로 ~x = -(x+1)
이 되는 것이다. 또는 x
대신에 x-1
을 넣으면 -x = ~(x-1)
이 된다. -5 = ~4
이므로 4 = 0000 0010
이고 ~4 = 1111 1101
이 된다. 따라서 -5
의 이진 표현법은 1111 1101
가 되는 것이다. 파이썬 2의 보수 위키를 참조한다.
연산자 우선순위
여러 연산자가 함께 있을 때 어떤 연산이 먼저 수행될 것인지를 순위를 정해 놓았다. 아래 표는 우선순위가 가장 높은 것부터 낮은 것 순서로 되있다. 순서가 명확하지 않을 때는 괄호를 사용하여 순서를 명확하게 하도록 한다.
연산자 | 설명 |
---|---|
(수식...), [수식...], {키: 값...}, {수식...} | 괄호 또는 튜플(tuple), 리스트(list), 사전(dictionary), 집합(set) 표시 |
x[인덱스], x[인덱스:인덱스], x(인수...), x.속성(attribute) | 원소 접근, 슬라이스, 함수 호출, 속성 참조 |
await x |
비동기(async) 함수식에서 사용 |
** |
거듭제곱 |
+x, -x, ~x |
양수, 음수, 논리 NOT 연산 |
*, @, /, //, % |
곱셈, 행렬 곱셈, 나눗셈, 정수 나눗셈, 나머지 연산 |
+, - |
덧셈, 뺄셈 |
<<, >> |
시프트 연산 |
& |
이진수 AND |
^ |
이진수 XOR |
| | 이진수 OR |
in, not in, is, is not, <, <=, >, >=, !=, == |
포함 관계, 항등, 비교 연산 |
not x |
논리 NOT |
and |
논리 AND |
or |
논리 OR |
if – else |
조건 수식 |
lambda |
람다 수식 |
- 괄호가 최우선 순위를 갖기 때문에
2 * (3-1)
은4
이고(1+1) ** (5-2)
은8
이다. - 다음으로 거듭제곱이 우선 순위를 갖기 때문에
2 ** 1+1
은4
가 아니고3
이다. 또한3 * 1 ** 3
은27
이 아니고3
이다. - 곱셈/나눗셈 같은 우선 순위를 가지며, 덧셈/뺄셈보다 우선 순위를 갖는다. 따라서
2 * 3-1
은4
가 아니라5
이고,5-2 * 2
은6
이 아니라1
이다. - 음수, 양수의 부호보다 거듭제곱 연산이 우선이기 때문에
-2 ** 2
는4
가 아니라-4
이다.
같은 연산 순위일 경우
같은 연산 순서를 가질 경우에는 일반적으로 왼쪽에서 오른쪽으로 순서대로 계산된다. 위의 표에서 같은 행에 있는 연산들은 연산 순위가 같다. 예를 들어 2 - 3 + 4
는 2 - 3 = -1
이 먼저 계산되고 -1 + 4 = 3
과 같이 계산된다. 다만 할당 연산자 =
은 오른쪽에서 왼쪽으로 계산이 된다. 예를 들면 a = b = 3
은 a = (b = 3)
과 같이 b
에 3
이 할당되고 a = b
가 계산된다.
문자열 연산
다음과 같이 문자열과 숫자는 수식 연산이 불가능하다.
그렇지만 문자열과 문자열 사이에 덧셈 연산자 +
를 사용할 수 있다. 여기서 덧셈은 당연히 수식 더하기가 아니라 두 문자열을 결합하는 연산을 수행하게 된다. 예를 들면
바나나 호두과자
문자열 * 양의 정수
형태로 곱셈 연산자를 사용할 수도 있다. 이것은 문자열
을 양의 정수
갯수만큼 반복해서 새로운 문자열을 반환한다.
'호두' * 3
'호두호두호두'
사용자 입력
input()
함수를 이용하여 키보드로부터 입력을 받을 수 있다. input()
함수는 받아들인 값을 모두 문자열로 반환하기 때문에 숫자로 변환하기 위해서는 int(), float()
와 같은 함수들을 이용하여 변환해야 한다.
연습
1 2
를 입력하고 엔터를 치고 결과에 대해서 이야기 하시오.- 프롬프트에서
apple
이라고 입력하고 엔터를 쳐보고 결과에 대해서 이야기 하시오. - 파이썬 프롬프트(Prompt)에서
2 + 3 * 4
를 입력하고 엔터를 쳐보고, 같은 식을 스크립트에 입력하고 실행시켜보고 다른 점을 이야기하시오. - 괄호를 이용하여
6 * 1 - 2
가-6
이 나오도록 하시오. - 파이썬 프롬프트에서
alice + 4
를 입력하고 엔터를 치면NameError: name 'alice' is not defined
라는 에러가 나온다.alice
변수를 만들어alice + 4
가10
이 되도록 하시오. - 사용자한테 이름과 나이를 입력하게 하여 그 사람의 나이가 99세가 되는 년도를 출력하는 프로그램을 작성하시오.
- 사용자로부터 3개의 숫자를 입력받아 합과 평균을 출력하는 코드를 작성하시오.
- 사용자로부터 원의 반지름을 입력받아 원의 면적을 계산하는 코드를 작성하시오.
- 지금 시각이 오후 2시이다. 51시간 후에 알람이 울리도록 맞췄다. 알람은 몇 시에 울리는가?
- 위의 문제를 사용자로부터 지금 시각과 몇 시간 후에 알람이 울리도록 할 것인가를 입력받아 알람이 울리는 시각을 계산하는 프로그램을 작성하시오.