콘텐츠로 건너뛰기

Python 모듈로스 사용법 상세 설명

CodeMDD.io

파이썬 Modulo 연산자 사용하기: % 연산자의 활용법

파이썬은 코드에서 숫자를 다룰 때 사용할 수 있는 여러 산술 연산자를 지원합니다. 이 중 하나인 **모듈로 연산자(%)**는 두 숫자를 나눈 나머지를 반환하는 기능을 합니다.

이 튜토리얼에서는 다음 내용을 다룹니다:

  • 수학에서의 모듈로 연산의 개념
  • 파이썬 모듈로 연산자를 다른 숫자 유형과 함께 사용하는 방법
  • 파이썬에서 모듈로 연산의 결과를 계산하는 방법
  • 클래스에서 **.__mod__()**를 오버라이딩하여 모듈로 연산자와 함께 사용하는 방법
  • 파이썬 모듈로 연산자를 사용하여 실제 문제를 해결하는 방법

파이썬 모듈로 연산자는 종종 간과되는 경우가 있습니다. 하지만 이 연산자에 대한 명확한 이해는 파이썬 도구상에서 매우 유용할 수 있습니다.

무료 보너스: 여기를 클릭하여 파이썬 치트 시트를 받아와서 데이터 유형, 사전, 리스트, 파이썬 함수와 같은 파이썬 3의 기본적인 내용을 학습하세요.

수학에서의 모듈로 연산

**모듈로(modulo)**라는 용어는 **모듈러 산술(modular arithmetic)**라고 불리는 수학의 한 분야에서 나온 것입니다. 모듈러 산술은 주어진 일정한 수의 정수 산술을 다룹니다. 모듈러 산술을 적용한 숫자 집합의 원형적인 숫자 선에서의 연산이 이루어집니다. 이 숫자 선 위에서 수행되는 모든 산술 연산은 일정한 숫자인 **모듈러(modulus)**에 도달하면 감쌀 것입니다.

예를 들어, 12시간 시계는 모듈러 12인 고정된 값(1부터 12까지의 값)을 가지고 있습니다. 12시간 시계에서 9시간 후가 언제인지를 알고 싶다고 합시다. 이 경우 8시에 9를 더해서는 안 됩니다. 왜냐하면 그러면 17시가 될 것이기 때문입니다. 대신 결과인 17을 mod 연산을 통해 12시간 시스템 안에서의 동등한 값으로 변환해야 합니다.

Text

8시 + 9 = 17시
17 mod 12 = 5

17 mod 125를 반환합니다. 이렇게 해서 8시부터 9시간 경과한 시간은 오후 5시임을 알 수 있습니다. 이런 결과는 숫자 17mod 12에 적용하여 도출했습니다.

파이썬 모듈로 연산자 기본 사용법

int를 이용한 모듈로 연산자

파이썬 모듈로 연산자는 숫자에 대해 그냥 ’%’ 기호를 사용하면 됩니다. 예를 들어, 다음과 같이 int 자료형을 사용하여 모듈로 연산을 수행할 수 있습니다.

num1 = 25
num2 = 7
result = num1 % num2
print(result)

실행 결과로 4가 출력됩니다. 왜냐하면 25를 7로 나눈 나머지는 4이기 때문입니다.

float를 이용한 모듈로 연산자

모듈로 연산자는 정수 외에도 부동소수점 숫자에도 적용할 수 있습니다. 다음은 float 자료형을 사용하여 모듈로 연산을 수행하는 예입니다.

num1 = 10.5
num2 = 3.2
result = num1 % num2
print(result)

이 코드의 실행 결과로 1.7이 출력됩니다. 10.5를 3.2로 나눈 나머지는 1.7입니다.

음수 피연산자와 모듈로 연산자

모듈로 연산자를 사용할 때 음수 피연산자를 다룰 때 주의해야 합니다. 파이썬은 피연산자 중 하나가 음수일 때 %를 사용할 때 동작을 달리합니다.

음수 피연산자를 사용한 예는 다음과 같습니다.

num1 = -13
num2 = 4
result = num1 % num2
print(result)

이 코드를 실행하면 3이 출력됩니다. -13을 4로 나눈 나머지는 3입니다. 이는 다음과 같이 계산됩니다:

-13 ÷ 4 = -3.25

4를 곱하여 가장 가까운 정수(-12)를 얻은 다음, 원래 수에 다시 더합니다. 그러면 -13이 나옵니다:

4 × -3 = -12
-13 + -12 = -13

따라서, -13을 4로 나눈 나머지는 3입니다.

파이썬 모듈로 연산자의 활용

파이썬 모듈로 연산자는 실제로 여러 가지 문제를 해결하는 데 사용할 수 있습니다. 이 섹션에서는 파이썬 모듈로 연산자를 사용하여 다양한 문제를 해결하는 방법을 알아보겠습니다.

홀수와 짝수 확인하기

숫자가 홀수인지 아니면 짝수인지 확인해야하는 경우 모듈로 연산자가 유용합니다. 다음은 이를 확인하는 예입니다.

def is_even_or_odd(number):
if number % 2 == 0:
print(number, "is even")
else:
print(number, "is odd")
is_even_or_odd(5)
is_even_or_odd(12)

이 코드의 실행 결과로 다음과 같이 출력됩니다.

5 is odd
12 is even

반복문에서 특정 간격으로 코드 실행하기

특정한 간격으로 코드를 주기적으로 실행해야 하는 경우에도 모듈로 연산자는 유용합니다. 예를 들어, 다음은 for 반복문을 사용하여 코드를 2초마다 한 번씩 실행하는 예입니다.

import time
for i in range(10):
print("Code is running")
time.sleep(2)

이 코드는 2초에 한 번씩 “Code is running”을 출력합니다.

순환 반복 생성하기

특정한 패턴으로 값을 순환해서 생성해야 하는 경우에도 모듈로 연산자를 사용할 수 있습니다. 예를 들어, 다음은 1, 2, 3, 1, 2, 3, …과 같이 1부터 3까지 순서대로 반복되는 수열을 생성하는 예입니다.

def cyclic_iteration(sequence, n):
index = n % len(sequence)
return sequence[index]
for i in range(10):
result = cyclic_iteration([1, 2, 3], i)
print(result)

이 코드의 실행 결과로 다음과 같이 출력됩니다.

1
2
3
1
2
3
1
2
3
1

단위 변환하기

단위를 변환해야 하는 상황에서도 모듈로 연산자를 사용할 수 있습니다. 예를 들어, 다음은 센티미터를 미터로 변환하는 함수입니다.

def cm_to_meter(cm):
meter = cm https://codemdd.io/ 100
return meter
print(cm_to_meter(250))

이 코드를 실행하면 2.5가 출력됩니다. 250 센티미터는 2.5 미터와 같습니다.

소수 판별하기

숫자가 소수인지 아닌지 판별해야 하는 경우에도 모듈로 연산자를 사용할 수 있습니다. 다음은 소수 여부를 판별하는 함수 예시입니다.

def is_prime(number):
if number < 2:
return False
for divisor in range(2, int(number**0.5) + 1):
if number % divisor == 0:
return False
return True
print(is_prime(17))
print(is_prime(20))

이 코드의 실행 결과로 다음과 같이 출력됩니다.

True
False

암호 구현하기

모듈로 연산자를 사용하여 간단한 암호를 구현할 수도 있습니다. 예를 들어, 입력된 문자열을 하나씩 이동시키는 시저 암호(Caesar cipher)를 구현하는 함수 예입니다.

def caesar_cipher(text, shift):
ciphered_text = ""
for char in text:
if char.isalpha():
ascii_offset = ord('A') if char.isupper() else ord('a')
ciphered_char = chr((ord(char) - ascii_offset + shift) % 26 + ascii_offset)
ciphered_text += ciphered_char
else:
ciphered_text += char
return ciphered_text
print(caesar_cipher("Hello, World!", 3))

위 코드는 "Khoor, Zruog!"을 출력합니다. “Hello, World!”라는 문자열이 숫자 3만큼 각 알파벳을 오른쪽으로 이동하여 암호화된 문자열을 생성했습니다.

파이썬 모듈로 연산자 고급 방법

decimal.Decimal과 함께 사용하기

모듈로 연산자는 decimal.Decimal과 같은 사용자 정의 자료형과 함께도 사용할 수 있습니다. decimal 모듈은 십진 부동 소수점 연산을 지원하는 기능을 제공합니다. 예를 들어, 다음은 decimal.Decimal을 사용하여 모듈로 연산을 수행하는 예입니다.

from decimal import Decimal
num1 = Decimal("10.5")
num2 = Decimal("3.2")
result = num1 % num2
print(result)

이 코드의 실행 결과로 Decimal('1.7')이 출력됩니다.

사용자 정의 클래스와 함께 사용하기

모듈로 연산자를 사용하려면 클래스에 .__mod__() 메서드를 오버라이딩하여 사용자 정의 클래스와 함께 사용할 수도 있습니다. .__mod__() 메서드는 모듈로 연산이 이루어질 때 호출되는 메서드입니다. 다음은 사용자 정의 클래스 내부에 .__mod__() 메서드를 작성하는 예입니다.

class MyNumber:
def __init__(self, value):
self.value = value
def __mod__(self, other):
return self.value % other.value
num1 = MyNumber(25)
num2 = MyNumber(7)
result = num1 % num2
print(result)

이 코드를 실행하면 4가 출력됩니다. num1 객체의 value 속성인 25를 7로 나눈 나머지는 4입니다.

결론

파이썬 모듈로 연산자를 사용하는 방법에 대해 배웠습니다. 이 연산자를 사용하여 다양한 문제를 해결할 수 있습니다. 모듈로 연산자의 개념과 기본 사용법을 이해하고, 실제 문제에 모듈로 연산자를 활용할 수 있는 방법을 배웁시다. 이를 통해 파이썬 프로그래밍에서 유용한 도구를 소지하게 됩니다.