fix prints

This commit is contained in:
aminhashemi92 2025-10-09 16:17:01 +03:30
parent 6367d34f0c
commit 10810f8700
15 changed files with 423 additions and 245 deletions

View file

@ -192,4 +192,122 @@ def normalize_size(size: int) -> str:
return f"{int(size_mb)} MB" if size_mb.is_integer() else f"{size_mb:.1f} MB"
else:
size_gb = size / (1024 * 1024 * 1024)
return f"{int(size_gb)} GB" if size_gb.is_integer() else f"{size_gb:.1f} GB"
return f"{int(size_gb)} GB" if size_gb.is_integer() else f"{size_gb:.1f} GB"
def number_to_persian_words(number):
"""
تبدیل عدد به حروف فارسی
مثال: 12345 -> دوازده هزار و سیصد و چهل و پنج
"""
try:
# تبدیل به عدد صحیح (در صورت نیاز)
from decimal import Decimal
if isinstance(number, Decimal):
number = int(number)
elif isinstance(number, float):
number = int(number)
elif isinstance(number, str):
number = int(float(number.replace(',', '')))
if number == 0:
return "صفر"
if number < 0:
return "منفی " + number_to_persian_words(abs(number))
# اعداد یک رقمی
ones = [
"", "یک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه"
]
# اعداد ده تا نوزده
teens = [
"ده", "یازده", "دوازده", "سیزده", "چهارده", "پانزده",
"شانزده", "هفده", "هجده", "نوزده"
]
# اعداد بیست تا نود
tens = [
"", "", "بیست", "سی", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود"
]
# اعداد صد تا نهصد
hundreds = [
"", "یکصد", "دویست", "سیصد", "چهارصد", "پانصد",
"ششصد", "هفتصد", "هشتصد", "نهصد"
]
# مراتب بزرگتر
scale = [
"", "هزار", "میلیون", "میلیارد", "بیلیون", "بیلیارد"
]
def convert_group(num):
"""تبدیل گروه سه رقمی به حروف"""
if num == 0:
return ""
result = []
# صدها
h = num // 100
if h > 0:
result.append(hundreds[h])
# دهگان و یکان
remainder = num % 100
if remainder >= 10 and remainder < 20:
# اعداد 10 تا 19
result.append(teens[remainder - 10])
else:
# دهگان
t = remainder // 10
if t > 0:
result.append(tens[t])
# یکان
o = remainder % 10
if o > 0:
result.append(ones[o])
return " و ".join(result)
# تقسیم عدد به گروه‌های سه رقمی
groups = []
scale_index = 0
while number > 0:
group = number % 1000
if group != 0:
group_text = convert_group(group)
if scale_index > 0:
group_text += " " + scale[scale_index]
groups.append(group_text)
number //= 1000
scale_index += 1
# معکوس کردن و ترکیب گروه‌ها
groups.reverse()
result = " و ".join(groups)
return result
except Exception:
return ""
def amount_to_persian_words(amount):
"""
تبدیل مبلغ به حروف فارسی با واحد ریال
مثال: 12345 -> دوازده هزار و سیصد و چهل و پنج ریال
"""
try:
words = number_to_persian_words(amount)
if words:
return words + " ریال"
return ""
except Exception:
return ""