파이썬 기초 강좌: 2. 변수, 표현식, 명령문 (Python Basics – Variables, Expressions, Statements)

이번 챕터에서는 프로그래밍의 기본 요소인 변수, 표현식, 명령문에 대해 자세히 배워보겠습니다. 먼저 변수는 데이터를 저장하는 공간으로, 다양한 유형의 값을 저장할 수 있습니다. 표현식은 값을 생성하는 코드 조각으로, 변수와 상수, 연산자를 결합하여 만들어집니다. 명령문은 특정 작업을 수행하는 코드로, 조건문, 반복문 등을 포함합니다. 이 챕터를 통해 이들 개념을 간단히 이해하고, 직접 코드를 작성해보며 실습해보는 기회를 가지세요. 이론과 실습을 병행하여 학습하면 더욱 효과적일 것입니다.

파이썬 기초 강좌 - 변수, 표현식, 명령문

1. Variables and types

  • 다음 중 정수를 찾으세요. 정수가 아닌 것들은 왜 정수가 아닌지 얘기해보세요.
a) 1.2
b) 3.141592
c) 193
d) ‘193’
e) “193”

정답: c)

나머지가 정수가 아닌 이유:
a) 소수점이 있음
b) 소수점이 있음
d) 문자열
e) 문자열

  • 다음 중 문자열(string)을 찾으세요.
a) [This is a string]
b) {This is a string}
c) “This is a string”
d) ‘This is a string’
e) “ ”
f) ‘ ’

정답: c), d), e), f)

나머지가 문자열이 아닌 이유:
a) 대괄호로 묶여 있음 (리스트로 인식)
b) 중괄호로 묶여 있음 (딕셔너리로 인식)

  • 타입 확인하는 방법?
# shell 환경에서 실행해 보세요.
~/Python$ python
Python 3.10.13 (main, Aug 24 2023, 12:59:26) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 1
>>> b = "help"
>>> type(a), type(b)
(<class 'int'>, <class 'str'>)
  • 객체 ID(주소) 확인 하는 방법
>>> id(a)
132942742683888

>>> id(b)
132942741912752
  • (실습) 다음 변수들의 타입을 확인 해 보세요.
>>> a = 193
>>> b = '193'
>>> c = 3.14
>>> import math
>>> d = math.pi

정답) 다음은 변수들의 타입을 확인한 결과입니다:

>>> type(a)
<class 'int'>

>>> type(b)
<class 'str'>

>>> type(c)
<class 'float'>

>>> type(d)
<class 'float'>

2. Variables

프로그래밍 언어의 가장 강력한 기능 중 하나는 변수를 조작하는 것입니다. 변수는 값을 참조하는 이름입니다. 대입문은 새 변수를 생성하고 값을 제공합니다.

  • (실습) 다음 코드를 대화식 모드에서 실행 해 보세요.
>>> message = 'And now for something completely different'
>>> n = 17
>>> pi = 3.1415926535897931
>>> print(n)
17
>>> print(pi)
3.141592653589793
>>> type(message)
<class 'str'>
>>> type(n)
<class 'int'>
>>> type(pi)
<class 'float'>

3. Variable names and keywords

  • (퀴즈) 변수명으로 사용 가능한 것을 모두 찾아보세요.
a) 1004angle
b) _number
c) number_of_student
d) @name
e) Name
f) class
g) if
h) for
i) with
j) more@

정답: b), c), e)

나머지가 변수명으로 사용 불가능한 이유:
a) 숫자로 시작함
d) 특수문자 @ 포함
f) 예약어 (class)
g) 예약어 (if)
h) 예약어 (for)
i) 예약어 (with)
j) 특수문자 @ 포함

4. Statements

명령문은 Python 인터프리터가 실행할 수 있는 코드 단위입니다.
두 가지 종류의 명령문: (표현식)명령문, 할당문

  • (실습) 대화식 모드 에서 코드를 작성하고 실행 해 보세요.
>>> # 명령문
>>> print(1)
>>> 
>>> # 할당문
>>> x = 2
>>> print(x) # 명령문
>>> 
>>> for i in range(10): # 할당문과 명령문 복합
...    print(i) # 명령문

5. Operators and operands

  • (퀴즈) 파이썬의 연산자 종류에 대해서 말해보세요. (기억나는 만큼만)
파이썬의 연산자는 여러 가지 종류가 있으며, 각각 고유의 기능을 가지고 있습니다. 주요 연산자의 종류는 다음과 같습니다:

1. 산술 연산자 (Arithmetic Operators):
   - `+` : 더하기 (Addition)
   - `-` : 빼기 (Subtraction)
   - `*` : 곱하기 (Multiplication)
   - `/` : 나누기 (Division)
   - `%` : 나머지 (Modulus)
   - `**` : 거듭제곱 (Exponentiation)
   - `//` : 나눗셈의 몫 (Floor Division)

2. 비교 연산자 (Comparison Operators):
   - `==` : 같음 (Equal)
   - `!=` : 같지 않음 (Not Equal)
   - `>` : 큼 (Greater than)
   - `<` : 작음 (Less than)
   - `>=` : 크거나 같음 (Greater than or Equal to)
   - `<=` : 작거나 같음 (Less than or Equal to)

3. 논리 연산자 (Logical Operators):
   - `and` : 논리 AND (Logical AND)
   - `or` : 논리 OR (Logical OR)
   - `not` : 논리 NOT (Logical NOT)

4. 할당 연산자 (Assignment Operators):
   - `=` : 할당 (Assign)
   - `+=` : 더한 후 할당 (Add and Assign)
   - `-=` : 뺀 후 할당 (Subtract and Assign)
   - `*=` : 곱한 후 할당 (Multiply and Assign)
   - `/=` : 나눈 후 할당 (Divide and Assign)
   - `%=` : 나머지를 구한 후 할당 (Modulus and Assign)
   - `**=` : 거듭제곱한 후 할당 (Exponentiate and Assign)
   - `//=` : 나눈 몫을 구한 후 할당 (Floor Divide and Assign)

5. 비트 연산자 (Bitwise Operators):
   - `&` : 비트 AND (Bitwise AND)
   - `|` : 비트 OR (Bitwise OR)
   - `^` : 비트 XOR (Bitwise XOR)
   - `~` : 비트 NOT (Bitwise NOT)
   - `<<` : 왼쪽 시프트 (Left Shift)
   - `>>` : 오른쪽 시프트 (Right Shift)

6. 식별 연산자 (Identity Operators):
   - `is` : 동일 객체인지 확인
   - `is not` : 동일 객체가 아닌지 확인

7. 멤버십 연산자 (Membership Operators):
   - `in` : 포함되어 있는지 확인
   - `not in` : 포함되어 있지 않은지 확인

6. Order of operations

  • 파이썬의 주요 연산자 우선순위
파이썬의 연산자 우선순위는 여러 연산자가 포함된 표현식에서 어떤 연산자가 먼저 수행될지를 결정합니다. 주요 연산자와 그 우선순위는 다음과 같습니다:

1. 괄호 `()`: 가장 높은 우선순위로, 괄호 안의 표현식을 먼저 계산합니다.
2. 거듭제곱 `**`: 다음으로 높은 우선순위로, 거듭제곱 연산을 수행합니다.
3. 단항 연산자 `+`, `-`, `~`: 양수, 음수, 비트 NOT 연산자를 포함합니다.
4. 곱셈/나눗셈/나머지/몫 `*`, `/`, `//`, `%`: 곱하기, 나누기, 나눗셈의 몫, 나머지 연산을 수행합니다.
5. 덧셈/뺄셈 `+`, `-`: 더하기와 빼기 연산을 수행합니다.
6. 비트 시프트 `<<`, `>>`: 비트 왼쪽 시프트와 오른쪽 시프트 연산을 수행합니다.
7. 비트 AND `&`: 비트 단위 AND 연산을 수행합니다.
8. 비트 XOR `^`: 비트 단위 XOR 연산을 수행합니다.
9. 비트 OR `|`: 비트 단위 OR 연산을 수행합니다.
10. 비교 연산자 `==`, `!=`, `>`, `<`, `>=`, `<=`: 비교 연산을 수행합니다.
11. 논리 NOT `not`: 논리 NOT 연산을 수행합니다.
12. 논리 AND `and`: 논리 AND 연산을 수행합니다.
13. 논리 OR `or`: 논리 OR 연산을 수행합니다.
14. 할당 연산자 `=`, `+=`, `-=`, `*=`, `/=`, `//=`, `%=`, `**=`: 값을 할당하거나 업데이트합니다.
15. 식별 연산자 `is`, `is not`: 객체의 동일성을 확인합니다.
16. 멤버십 연산자 `in`, `not in`: 요소가 시퀀스에 포함되는지 확인합니다.

이 우선순위를 잘 이해하고 활용하면 복잡한 표현식을 정확하게 작성할 수 있습니다. 필요한 경우, 우선순위를 명확히 하기 위해 괄호를 사용하는 것이 좋습니다.

※ 식이 길어지면 괄호를 활용해서 명시적으로 표현하세요.

7. String operations

  • (실습) 다음을 실행해 보세요.
>>> first = 10
>>> second = 15
>>> print(first + second)

>>> first = '100'
>>> second = '150'
>>> print(first + second)

>>> first = 'Test '
>>> second = 3
>>> print(first * second)

8. Asking the user for input

  • (실습) 다음을 실행해 보세요.
>>> prompt = "이름을 입력해주세요:\n"
>>> name = input(prompt)
이름을 입력해주세요:
James
>>> print(name)
James

>>> number = input("정수를 입력해주세요: ")
정수를 입력해주세요: 1234
>>> print(number + 100)
>>> type(number)

>>> number = int(input("정수를 입력해주세요: ")) # 형변환
>>> type(number)
>>> print(number + 100)

9. Comments

  • 주석의 중요성에 대해서 얘기해보세요.
    1. 코드의 이해를 돕기 위해: 주석을 통해 코드의 작동 방식과 목적을 설명하여, 다른 개발자들이나 미래의 자신이 코드를 더 쉽게 이해할 수 있게 합니다.
    2. 유지보수의 용이성: 주석을 달아둠으로써 코드의 변경이나 오류 수정 시, 해당 부분이 어떤 역할을 하는지 빠르게 파악하여 유지보수를 용이하게 합니다.
    3. 협업의 효율성 증대: 팀 프로젝트에서 주석은 팀원들 간의 의사소통을 원활하게 하여, 협업의 효율성을 증대시킵니다.

10. Choosing mnemonic varible names

  • 다음 변수명에 대해서 각자의 느낌을 말해보세요.
(A)
a = 35.0
b = 12.50
c = a * b
print(c)

(B)
hours = 35.0
rate = 12.50
pay = hours * rate
print(pay)

(C)
x1q3z9ahd = 35.0
x1q3z9afd = 12.50
x1q3p9afd = x1q3z9ahd * x1q3z9afd
print(x1q3p9afd)

11. Debugging

  • (실습) 다음을 실행 해 보고 디버깅 해보세요.
>>> bad name = 5

>>> principal = 327.68
>>> interest = principle * rate

>>> a = 123
>>> b = 0
>>> a / b
  • 정답
>>> bad_name = 5

>>> principal = 327.68
>>> rate = 0.05
>>> interest = principal * rate
>>> print(interest)
16.384

>>> a = 123
>>> b = 1
>>> result = a / b
>>> print(result)
123.0

Exercises

(1) 이름을 입력 받아서 환영 메세지를 출력하세요.

Enter your name: James
Hello James

정답)

# 사용자로부터 이름을 입력받습니다.
name = input("Enter your name: ")

# 환영 메시지를 출력합니다.
print("Hello " + name)

(2) 사용자에게 시간과 시급을 묻는 프로그램을 작성하고 총 급여를 출력하세요.

Enter Hours: 35
Enter Rate: 2.75
Pay: 96.25

정답)

# 사용자로부터 근무 시간과 시급을 입력받습니다.
# input으로 입력받은 값은 문자열로 취급됩니다.
hours = input("Enter Hours: ")
rate = input("Enter Rate: ")

# float() 함수로 문자열을 실수(float)로 변환합니다.
# 형 변환은 아직 안배운 내용입니다. 참고만 하세요.
hours = float(hours)
rate = float(rate)

# 총 급여를 계산합니다.
pay = hours * rate

# 총 급여를 출력합니다.
print("Pay: " + str(pay))

파이썬 기초 강좌: 3. 조건문 예제와 실습 (Python Basics – Conditional Statements and Exercises)

Leave a Comment