From 27c7092d9caf6d13ff0a53336b655ca42b9c4b70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D8=A3=D8=AD=D9=85=D8=AF=20=D8=A7=D9=84=D9=85=D8=AD=D9=85?= =?UTF-8?q?=D9=88=D8=AF=D9=8A=20=28Ahmed=20El-Mahmoudy=29?= Date: Mon, 23 Feb 2026 21:42:07 +0100 Subject: [PATCH] Make e04_ord_chr more readable & efficient * directly compare digit with '0', '9', 'a', 'f' * support capital hex digits: A-F --- ch01-numbers/e04b1_ord_chr.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ch01-numbers/e04b1_ord_chr.py b/ch01-numbers/e04b1_ord_chr.py index 5d787f2..e6bb8a7 100755 --- a/ch01-numbers/e04b1_ord_chr.py +++ b/ch01-numbers/e04b1_ord_chr.py @@ -9,11 +9,15 @@ def ord_hex_output(): decnum = 0 hexnum = input('Enter a hex number to convert: ') + ord_0 = ord('0') + ord_a_minus_10 = ord('a') - 10 for power, digit in enumerate(reversed(hexnum)): - if 48 <= ord(digit) <= 57: - dec_digit = ord(digit) - 48 - elif 97 <= ord(digit) <= 102: - dec_digit = ord(digit) - 87 + if '0' <= digit <= '9': + dec_digit = ord(digit) - ord_0 + elif 'a' <= digit.lower() <= 'z': + dec_digit = ord(digit.lower()) - ord_a_minus_10 decnum += dec_digit * (16 ** power) print(decnum) + +ord_hex_output()