From 41c0c31f97829ca0d90e568967ea7c3d0ceeb1fc Mon Sep 17 00:00:00 2001 From: schaermicha1 Date: Fri, 27 Feb 2026 15:49:12 +0100 Subject: [PATCH] simple classes, add codewars - last digit of huge number --- src/classes.py | 32 ++++++++++++++++++++ src/codewars/__init__.py | 0 src/codewars/lastDigitOfHugeNumber.py | 9 ++++++ tests/codewars/test_lastDigitOfHugeNumber.py | 20 ++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 src/classes.py create mode 100644 src/codewars/__init__.py create mode 100644 src/codewars/lastDigitOfHugeNumber.py create mode 100644 tests/codewars/test_lastDigitOfHugeNumber.py diff --git a/src/classes.py b/src/classes.py new file mode 100644 index 0000000..b1ec8d5 --- /dev/null +++ b/src/classes.py @@ -0,0 +1,32 @@ +from dataclasses import dataclass + + +@dataclass(frozen=True) +class Konto: + inhaber: str + saldo: float + + def __init__(self, inhaber: str, saldo: float): + if not inhaber: + raise ValueError("inhaber is required") + if saldo < 0: + raise ValueError("saldo must be positive") + object.__setattr__(self, "inhaber", inhaber) + object.__setattr__(self, "saldo", saldo) + + def einzahlen(self, betrag: float): + object.__setattr__(self, "saldo", self.saldo + betrag) + + def abheben(self, betrag: float): + object.__setattr__(self, "saldo", self.saldo - betrag) + return betrag + + +k1 = Konto("Alice", 100.0) +k2 = Konto("Housi", 10) +k2.einzahlen(100) + +print(k1.inhaber) +print(k2.saldo) +print(k1 is k2) +print(k1) diff --git a/src/codewars/__init__.py b/src/codewars/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/codewars/lastDigitOfHugeNumber.py b/src/codewars/lastDigitOfHugeNumber.py new file mode 100644 index 0000000..394a32e --- /dev/null +++ b/src/codewars/lastDigitOfHugeNumber.py @@ -0,0 +1,9 @@ +def last_digit(lst): + rev_lst = list(reversed(lst)) + + n = 1 + + for number in rev_lst: + n = number ** (n if n < 4 else n % 4 + 4) + + return n % 10 diff --git a/tests/codewars/test_lastDigitOfHugeNumber.py b/tests/codewars/test_lastDigitOfHugeNumber.py new file mode 100644 index 0000000..1ecc6fe --- /dev/null +++ b/tests/codewars/test_lastDigitOfHugeNumber.py @@ -0,0 +1,20 @@ +from codewars.lastDigitOfHugeNumber import last_digit + + +def test_last_digit(): + test_data = [ + ([], 1), + ([0, 0], 1), + ([0, 0, 0], 0), + ([1, 2], 1), + ([3, 4, 5], 1), + ([4, 3, 6], 4), + ([7, 6, 21], 1), + ([12, 30, 21], 6), + ([2, 2, 2, 0], 4), + ([937640, 767456, 981242], 0), + ([123232, 694022, 140249], 6), + ([499942, 898102, 846073], 6), + ] + for test_input, test_output in test_data: + assert last_digit(test_input) == test_output