From b9cf3eca9e2c89b5c8c77fb51978ab5199f4d8f8 Mon Sep 17 00:00:00 2001 From: Ilya-Bugaev Date: Fri, 7 Nov 2025 15:42:51 +0300 Subject: [PATCH 01/12] Correcting CI errors in bin search --- src/bin_search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin_search.py b/src/bin_search.py index 713abfc..d878d33 100644 --- a/src/bin_search.py +++ b/src/bin_search.py @@ -1,4 +1,4 @@ -def binSearch(xs: list[int], x: int): +def bin_search(xs: list[int], x: int): left, right = 0, len(xs) - 1 while left < right: mid = (left + right) // 2 From 6ab38ed146c01e684d1c5d244d2483390b17e271 Mon Sep 17 00:00:00 2001 From: Ilya-Bugaev Date: Fri, 7 Nov 2025 15:46:46 +0300 Subject: [PATCH 02/12] Correcting CI errors in checksum --- src/checksum.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/checksum.py b/src/checksum.py index 74b4fb0..ffc62c7 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -1,8 +1,8 @@ -def modulo11Checksum(ISBNNumber: str): +def modulo11_checksum(is_bn_number: str): - digits = [int(char) for char in ISBNNumber if char.isdigit()] + digits = [int(char) for char in is_bn_number if char.isdigit()] - checkDigit = digits[-1] + check_digit = digits[-1] total = 0 for i in range(len(digits) - 1): @@ -10,5 +10,5 @@ def modulo11Checksum(ISBNNumber: str): digit = digits[i] total += digit * weight - checksum = total + checkDigit + checksum = total + check_digit return checksum % 11 == 0 From a0e8ef7a64c45e2a8098bb68b092d24c48ecdeb5 Mon Sep 17 00:00:00 2001 From: Ilya-Bugaev Date: Fri, 7 Nov 2025 15:52:40 +0300 Subject: [PATCH 03/12] Correction of module names in tests --- test/test_bin_searh.py | 2 +- test/test_checksum.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_bin_searh.py b/test/test_bin_searh.py index d18d85b..4a60a6a 100644 --- a/test/test_bin_searh.py +++ b/test/test_bin_searh.py @@ -1,4 +1,4 @@ -from src.bin_search import binSearch +from src.bin_search import bin_search def test_middle(): diff --git a/test/test_checksum.py b/test/test_checksum.py index f64a64c..e124f91 100644 --- a/test/test_checksum.py +++ b/test/test_checksum.py @@ -1,4 +1,4 @@ -from src.checksum import modulo11Checksum +from src.checksum import modulo11_checksum def test_good(): From fc21f5aea837b8c11983dee0edd5b6f331c718a0 Mon Sep 17 00:00:00 2001 From: Ilya-Bugaev Date: Fri, 7 Nov 2025 16:07:15 +0300 Subject: [PATCH 04/12] correction of module names in tests --- src/__pycache__/checksum.cpython-312.pyc | Bin 0 -> 759 bytes .../test_checksum.cpython-312-pytest-8.4.2.pyc | Bin 0 -> 1732 bytes test/test_bin_searh.py | 6 +++--- test/test_checksum.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 src/__pycache__/checksum.cpython-312.pyc create mode 100644 test/__pycache__/test_checksum.cpython-312-pytest-8.4.2.pyc diff --git a/src/__pycache__/checksum.cpython-312.pyc b/src/__pycache__/checksum.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..59c8d2e27e3039e4f12b1396602f671c04ea9626 GIT binary patch literal 759 zcmYjOOKTHR6h8OPBT3WIJWPB*W6&;)Qe$-Ki;^gUB_QsE5|WuQ8JmaBOe~2L$U-57 zh!YeVaMP`HqYLpzxM>h13|$0V%`P;8*o~fVL+g$KaanBW!~KIe0@v zS_YA>CjdIcAW#11&xO15T_gPyx}$f^AiHz!fcBFtbSUbvkJFg#FcR&sIya|+?(;l@ zdMb%&1~oXhiqBvTpTW1WPFuh%+mEtX1!H@p=0Xn(bU`J8jy|d)h&S6l?huO;XB=ZZS$-w>Y&}FUuBFmFua1>b$PS zij|^j@h(ZTf?`D$Hws4*PH*VNsznrw-;|Yd1@%V>zsu5^H7$T8lAax2N>>^+IjvM% z#dJo~S2Ve{qRZ%H3RlybDyBW%<)W=JU7Lcfy0)--PoAz;MYP z8Hb}iejJLM&jx`WH}(r=Y#1LTM*g!~+|-AZ=>mje=8MtsbKQI6VAL#a-5jotf=hes z((i+la4bhO=Q&@+R#WVI0U@8F7NhB^+w2FJVG`6B!lD0$JCS@#J%gb;2mUim8A8aE P3M8?U{Rz0K&WHa6z)`!Y literal 0 HcmV?d00001 diff --git a/test/__pycache__/test_checksum.cpython-312-pytest-8.4.2.pyc b/test/__pycache__/test_checksum.cpython-312-pytest-8.4.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8b8388f93f9e43b35b6c31be234f9b01fde37d94 GIT binary patch literal 1732 zcmd^9OK;Oa5Z<+&N0WvC6_2V&L`X-8RLJqg@A@kVpvi zFCcp0&}&tRKf)z#QWg2affM3_$gL-4*V)8~O6{FhGV|?t#xuK~Z@#2b2?Xoe&s6O* z=Mqa#g~}Q7RG4o=A4oiB)2N|b(RvuV4UrdKzt>MPoGs-yRF6$L57fA}2pWVnkwK*8#u{Sofs4yGSW$&@|j&DW+P z&_wT#;A=!@y_m3X#s!*aZwy5a5{}^4Gj`$N--tSfdL~&;iJ6?>3_mQYFqKbo8*Zg5 zc`1=U6njC~Cb}buSfSs;$J&CM?BW(uBg^enDOW0&bDE|tm2>ynS%XrGc$wStjn<+{ z6K_W#^MIR*DxGJRl1kM?*S{z};FHn!+mn5{(JC@gVq$SGP9ji_KmDlD(pQ@`+pE>7 zAGO`8VN*W=R?niIZV>;vPB+}9ZR*5o5PjWtR}EXQ8;<2q>C{-WnAyMZn3q>`>rV-B zi9e&Sxx_I%-P&r{M&0n>i7NX^mMu7m7Tzobn;>S1vUbU2GACML!*#4e&2AY5je0q1 zIXPBVPSZ;T2DlhEX};0&r+C@xu4|I3@D|o?^aY4_=^pE2g%~GGWi{GufWm|;ek@zO$X*f9vuz>3~}Td zq*4=pTu_-L!Qjv80gv;+g#Zcj#Ck(&9*}oz@?#?#VZ+Oxrlgt|bDuCOawhRp?IE6s pANVAGpHCU Date: Fri, 7 Nov 2025 16:16:48 +0300 Subject: [PATCH 05/12] added type and void checking --- src/checksum.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/checksum.py b/src/checksum.py index ffc62c7..1774f24 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -1,5 +1,9 @@ def modulo11_checksum(is_bn_number: str): + if not isbn_number or not isinstance(isbn_number, str): + raise ValueError("Invalid input: must be non-empty string") + + digits = [int(char) for char in is_bn_number if char.isdigit()] check_digit = digits[-1] From efb689c1180fce4c574a3679f4f7184c11cc1e4d Mon Sep 17 00:00:00 2001 From: Ilya-Bugaev Date: Fri, 7 Nov 2025 16:23:30 +0300 Subject: [PATCH 06/12] fixed the calculation of weight and checksum --- src/checksum.py | 6 +++--- ...test_checksum.cpython-312-pytest-8.4.2.pyc | Bin 1732 -> 1719 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/checksum.py b/src/checksum.py index 1774f24..3d9bdd0 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -10,9 +10,9 @@ def modulo11_checksum(is_bn_number: str): total = 0 for i in range(len(digits) - 1): - weight = 10 + weight = 10 - i digit = digits[i] total += digit * weight - checksum = total + check_digit - return checksum % 11 == 0 + checksum = total % 11 + return checksum == check_digit diff --git a/test/__pycache__/test_checksum.cpython-312-pytest-8.4.2.pyc b/test/__pycache__/test_checksum.cpython-312-pytest-8.4.2.pyc index 8b8388f93f9e43b35b6c31be234f9b01fde37d94..a98ba6c85be43356de18465639443fb0811ef9e9 100644 GIT binary patch delta 443 zcmX@YyPcQ!G%qg~0}vc|$D6rfBd;8jR1q_fyOQ}9b3vs6h%f>XCM!9Lm?sA@-LDq~ z%CZ1)aV(H%V7MWxbAd(o3b)LR_{-e7K;}hm-Rmp}bQLTK5xI=SzQUqABOW4riADDU zswSW~Q0-@+1q{g`0tVO^7&dQUUdt#Ba$*rHh~NYgnk+?vAhyut5?1wk5g_vxM@edN zNqkabN|6+h%K^m2X+Q$#UPXfoEQVM36&A=}<~IZ~F91ny5aS}Z;dK@Sx(ZeW5xI=S zzQSU-KprA|39K7g6Ob(i)L0}2v`drg7DrNPW==_FUU3oEWCJ#1OCF%`EuP|{WWD5! z)a2~q(p+$07lFbQ?9i1AV68{#18OW12im2{b&DgZG&83pGq1Rad$KZ{u_Z51_!dubQL Date: Fri, 7 Nov 2025 16:30:39 +0300 Subject: [PATCH 07/12] adding pytests --- test/test_checksum.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/test/test_checksum.py b/test/test_checksum.py index 9a91101..3eae4ad 100644 --- a/test/test_checksum.py +++ b/test/test_checksum.py @@ -1,9 +1,20 @@ from src.checksum import modulo11_checksum - -def test_good(): +def test_valid_isbn10_with_hyphens(): + #Тесты с дефисами assert modulo11_checksum("2-266-11156-8") + assert modulo11_checksum("0-7475-3269-9") + assert modulo11_checksum("1-56619-909-3") + +def test_valid_isbn10_without_hyphens(): + #Тест без дефисов + assert modulo11_checksum("2266111568") + assert modulo11_checksum("0747532699") + assert modulo11_checksum("1566199093") -def test_bad(): +def test_invalid_isbn10(): + #Тесты невалидности assert not modulo11_checksum("2-266-11156-3") + assert not modulo11_checksum("0-7475-3269-8") + assert not modulo11_checksum("1566199095") From 3e9bf43030cd4b53bad9518a6c1e4e937bd21483 Mon Sep 17 00:00:00 2001 From: Ilya-Bugaev Date: Fri, 7 Nov 2025 16:33:24 +0300 Subject: [PATCH 08/12] correcting inequalities in the cycle --- src/bin_search.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin_search.py b/src/bin_search.py index d878d33..3249226 100644 --- a/src/bin_search.py +++ b/src/bin_search.py @@ -1,6 +1,6 @@ def bin_search(xs: list[int], x: int): left, right = 0, len(xs) - 1 - while left < right: + while left <= right: mid = (left + right) // 2 if xs[mid] == x: return mid From caee695c297385b562b1ae727fe0e9dfee0c793b Mon Sep 17 00:00:00 2001 From: Ilya-Bugaev Date: Fri, 7 Nov 2025 16:38:09 +0300 Subject: [PATCH 09/12] adding pytests for bin_search --- test/test_bin_searh.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/test/test_bin_searh.py b/test/test_bin_searh.py index 0ec1885..b513ef9 100644 --- a/test/test_bin_searh.py +++ b/test/test_bin_searh.py @@ -2,12 +2,20 @@ def test_middle(): - assert bin_search([1, 2, 3, 4, 5], 4) == 3 + assert bin_search([1, 2, 3, 4, 5], 3) == 2 def test_start(): + assert bin_search([1, 2, 3, 4], 1) == 0 assert bin_search([1, 2, 3, 4], 2) == 1 +def test_end(): + assert bin_search([1, 2, 3, 4, 5], 5) == 4 + assert bin_search([1, 2, 3, 4], 4) == 3 + + def test_not_in_list(): assert bin_search([1, 2, 3, 4], 5) == -1 + assert bin_search([1, 2, 3, 4], 0) == -1 + assert bin_search([1, 2, 3, 4], 6) == -1 From 0ca7f908da35c541fda4cac904dfc86ae9c570d8 Mon Sep 17 00:00:00 2001 From: Ilya-Bugaev Date: Fri, 7 Nov 2025 16:56:37 +0300 Subject: [PATCH 10/12] added utility --- src/checksum.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/checksum.py b/src/checksum.py index 3d9bdd0..5905eb9 100644 --- a/src/checksum.py +++ b/src/checksum.py @@ -16,3 +16,13 @@ def modulo11_checksum(is_bn_number: str): checksum = total % 11 return checksum == check_digit + + +while True: + isbn = input("ISBN: ").strip() + if isbn == "-1": + break + if check_isbn(isbn): + print("correct") + else: + print("incorrect") From d192d23b066aa64cea254d4b63cc37ec9d763513 Mon Sep 17 00:00:00 2001 From: Ilya Bugaev Date: Fri, 7 Nov 2025 17:01:39 +0300 Subject: [PATCH 11/12] Update README.md changing the README --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index e93444f..81a3d67 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # Контрольная работа 1 (2 вариант) Темы: Git и GitHub, стандарты оформления кода, хорошие практики, тестирование. +Фамилия, имя: Бугаев Илья +Группа: 25.Б-42 + ## Этапы выполнения работы From 800bd431fa0a3c89bdca349def3bd0c600922a54 Mon Sep 17 00:00:00 2001 From: Ilya Bugaev Date: Fri, 7 Nov 2025 17:02:27 +0300 Subject: [PATCH 12/12] Update README.md changing the README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 81a3d67..b43c084 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # Контрольная работа 1 (2 вариант) Темы: Git и GitHub, стандарты оформления кода, хорошие практики, тестирование. + Фамилия, имя: Бугаев Илья + Группа: 25.Б-42