본문 바로가기
프로그래밍/파이썬 Python

[파이썬] 1-3. 연산자(산술,비교,논리,할당,비트) [입문,초보용 문법] - 질문으로 공부하기

by it-수다쟁이증후군 2023. 3. 29.

Q1.나)
연산자에 대해서 설명해주세요

A1.ssam)
파이썬에서는 다양한 연산자를 제공합니다. 연산자는 특정한 작업을 수행하거나 값을 비교할 때 사용됩니다. 아래는 파이썬에서 제공하는 연산자의 종류입니다.

  1. 산술 연산자: +, -, *, /, //, %
  2. 비교 연산자: >, <, >=, <=, ==, !=
  3. 논리 연산자: and, or, not
  4. 할당 연산자: =, +=, -=, *=, /=, //=, %=
  5. 비트 연산자: &, |, ^, ~, <<, >>

아래는 각 연산자의 예시 코드입니다.

# 산술 연산자
x = 10 + 5      # 덧셈
y = 10 - 5      # 뺄셈
z = 10 * 5      # 곱셈
a = 10 / 5      # 나눗셈
b = 10 // 5     # 나눗셈(몫)
c = 10 % 5      # 나눗셈(나머지)
print(x)
print(y)
print(z)
print(a) 
print(b)
print(c)

위 코드에서는 산술 연산자로 덧셈, 뺄셈, 곱셈, 나눗셈 등을 수행하였습니다.

터미널에 출력된 산술연산자의 결과값
산술연산자 결과값
# 비교 연산자
x = 10
y = 5
print(x > y)    # x가 y보다 크다(True)
print(x < y)    # x가 y보다 작다(False)
print(x == y)   # x와 y가 같지 않다(True)
print(x != y)   # x와 y가 같지 않다(True)

위 코드에서는 비교 연산자로 크기를 비교하였습니다. 예를들어 > 연산자는 왼쪽 피연산자가 오른쪽 피연산자보다 큰지 여부를 확인합니다..

터미널에 출력된 비교연산자의 결과값
비교연산자 결과값
# 논리 연산자
x = True
y = False
print(x and y)  # x와 y가 모두 True이므로 True and False는 False
print(x or y)   # x가 True이므로 True or False는 True
print(not x)    # x가 True이므로 not x는 False

위 코드는 논리 연산자로는 and, or, not 연산을 수행하였습니다. and 연산은 양쪽 모두가 참(True)일 때만 결과가 참입니다. or 연산은 양쪽 중 하나만 참이어도 결과가 참입니다. not 연산은 논리값을 반대로 바꿉니다.

터미널에 출력된 논리연산자의 결과값
논리연산자 결과값
# 할당 연산자
x = 10
print(x)
x += 5          # x = x + 5와 같음
print(x)

위 코드는 할당 연산자로는 = 연산자를 사용하여 변수에 값을 할당하였습니다. 또한 += 연산자를 사용하여 변수에 값을 더하여 할당하였습니다.

터미널에 출력된 할당연산자의 결과값
할당연산자 결과값
# 비트 연산자
x = 0b1010      # 10
y = 0b1100      # 12
print(x & y)    # 0b1000 (둘 다 1인 자리에서만 1)
print(x | y)    # 0b1110 (둘 중 하나 이상이 1인 자리에서 1)
print(~x)       # -11 (1의 보수)
print(x ^ y)    # 0b0110 (둘이 다른 자리에서만 1)
print(x << 2)   # 0b101000 (왼쪽으로 2칸 이동)
print(y >> 2)   # 0b0011 (오른쪽으로 2칸 이동)
# 바이너리 출력 bin()
print(bin(x & y))    # 0b1000 (둘 다 1인 자리에서만 1)
print(bin(x | y))    # 0b1110 (둘 중 하나 이상이 1인 자리에서 1)
print(bin(~x))       # -11 (1의 보수)
print(bin(x ^ y))    # 0b0110 (둘이 다른 자리에서만 1)
print(bin(x << 2))   # 0b101000 (왼쪽으로 2칸 이동)
print(bin(y >> 2))   # 0b0011 (오른쪽으로 2칸 이동)

비트 연산자는 이진수를 다루는데 사용됩니다. 이진수는 0과 1로 이루어진 수 체계로, 컴퓨터에서 정보를 저장하고 처리할 때 사용됩니다. 비트 연산자로는 &, |, ^, ~, <<, >> 등이 있습니다.

bin() 함수는 정수를 2진수 문자열로 변환하여 반환합니다.

터미널에 출력된 비트연산자의 결과값
비트연산자 결과값

위와 같은 연산자들을 적절히 활용하면, 다양한 작업을 수행할 수 있습니다.

Q2.나)

x = 10
y = 5
print(x > y)    # x가 y보다 크다(True)

이 코드에서 print 함수의 인자로 x > y 라는 연산식이 들어간거 같은데? 맞게 해석한거야?

A2.ssam)
맞습니다. print(x > y)x > y라는 연산식의 결과를 출력하는 것입니다. x > y는 x가 y보다 큰지를 판단하는 비교 연산자입니다. 따라서 x > y의 결과가 True이므로 print(x > y)의 출력 결과는 True가 됩니다.

마찬가지로 print(x < y)x < y라는 연산식의 결과를 출력하는 것입니다. x < y는 x가 y보다 작은지를 판단하는 비교 연산자입니다. 따라서 x < y의 결과가 False이므로 print(x < y)의 출력 결과는 False가 됩니다.

Q3.나)
함수의 인자값으로 연산식이 들어가면 그 연산식의 결과값이 출력 된다. 맞죠?

A3.ssam)
네, 맞습니다. 파이썬에서 함수의 인자(argument)연산식(expression)을 넘겨주면, 해당 연산식의 결과값이 함수 내부에서 사용됩니다.

예를 들어, 아래와 같이 print() 함수에 10 + 20이라는 연산식을 전달하면, 10 + 20의 결과인 30이 출력됩니다.

print(10 + 20)   # 30

따라서 함수의 인자값으로 연산식을 전달할 때에는, 해당 연산식의 결과가 함수에서 올바르게 처리될 수 있도록 유의해야 합니다.

Q4.나)
정상적으로 작동이 안될대도 있나요? 예제를 들어서 설명해주세요

A4.ssam)
네, 정상적으로 작동하지 않는 경우도 있습니다. 예를 들어, 함수에 잘못된 자료형의 인자값을 전달하거나, 인자값이 부족하거나, 많거나, 잘못된 형식으로 전달되는 경우에는 오류가 발생할 수 있습니다.

예를 들어, int() 함수는 문자열을 정수형으로 변환하는 함수입니다. 하지만, 숫자가 아닌 문자열을 전달하면 오류가 발생합니다. 아래 코드는 int() 함수에 문자열 "abc"를 인자값으로 전달하는 예시입니다.

x = int("abc")

위 코드를 실행하면, 다음과 같은 오류가 발생합니다.

ValueError: invalid literal for int() with base 10: 'abc'

이 오류는 "abc"라는 문자열이 정수형으로 변환될 수 없다는 것을 나타냅니다. 따라서 함수의 인자값을 전달할 때에는, 해당 함수가 어떤 자료형을 요구하는지를 반드시 확인하고, 올바른 자료형과 형식으로 인자값을 전달해야 합니다.

Q5.나)
ValueError: invalid literal for int() with base 10: 'abc' 이거 하나씩 해석좀 해주세요.

A5.ssam)
ValueError: invalid literal for int() with base 10: 'abc'int() 함수가 인자로 받은 값이 잘못되었을 때 발생하는 오류 메시지입니다. 각 부분을 해석하면 다음과 같습니다.

  • ValueError: 오류 유형을 나타냅니다. 여기서는 값이 잘못되었을 때 발생하는 오류입니다.
  • invalid literal for int() with base 10: 오류의 내용을 나타냅니다. 여기서는 int() 함수에 전달된 값이 정수형으로 변환될 수 없다는 의미입니다.
  • 'abc': 오류가 발생한 값(인자값)을 나타냅니다. 위 예시에서는 "abc"라는 문자열이 전달되었으며, 이 문자열은 정수형으로 변환될 수 없습니다.

따라서 이 오류 메시지에서는 "abc"라는 문자열이 int() 함수에 전달되어 발생한 오류임을 알 수 있습니다.

A.ssam)
오늘도 쉽습니다. 그냥 보면 됩니다. 혹시 암기하거나 할 필요 없습니다. 연산자 관련 코드를 작성할때 "아~ 이런게 있었지!" 이 정도면 충분합니다. 심심하면 그냥 한번 쭉욱 읽어 보길 바랍니다.

Last.ssam)
1-1.print()
1-2.변수와 자료형
1-3.연산자
까지 아주 쉽습니다. 다음장 부터 쪼~끔. 아주 쪼끔 난이도가 올라갑니다. 다음장으로 넘어가기 전에 이전에 했던 꼭 읽!어! 보시기 바랍니다. 암기NO.NO. 그러 다음장에서~~

댓글