Ordinals#

Generate Bangla ordinal strings — ১ম, ২য়, ৪র্থ, ১১তম, and so on.

from bornomala import to_bangla_ordinal

to_bangla_ordinal(n)#

Signature

def to_bangla_ordinal(n: int) -> str

Parameters

ParameterTypeDescription
nintA positive integer. Floats are truncated via int().

Raises ValueError for zero or negative input.


Suffix rules#

RangeSuffixExample
1১ম
2য়২য়
3য়৩য়
4র্থ৪র্থ
5৫ম
6ষ্ঠ৬ষ্ঠ
7৭ম
8৮ম
9৯ম
10১০ম
11+তম১১তম, ১০০তম …

Full reference table (1–20)#

nOrdinalMeaning
1১মপ্রথম (first)
2২য়দ্বিতীয় (second)
3৩য়তৃতীয় (third)
4৪র্থচতুর্থ (fourth)
5৫মপঞ্চম (fifth)
6৬ষ্ঠষষ্ঠ (sixth)
7৭মসপ্তম (seventh)
8৮মঅষ্টম (eighth)
9৯মনবম (ninth)
10১০মদশম (tenth)
11১১তমএকাদশ (eleventh)
12১২তমদ্বাদশ (twelfth)
13১৩তমত্রয়োদশ
14১৪তমচতুর্দশ
15১৫তমপঞ্চদশ
20২০তমবিংশ

Examples#

to_bangla_ordinal(1)     # '১ম'
to_bangla_ordinal(2)     # '২য়'
to_bangla_ordinal(3)     # '৩য়'
to_bangla_ordinal(4)     # '৪র্থ'
to_bangla_ordinal(6)     # '৬ষ্ঠ'
to_bangla_ordinal(10)    # '১০ম'
to_bangla_ordinal(11)    # '১১তম'
to_bangla_ordinal(21)    # '২১তম'
to_bangla_ordinal(100)   # '১০০তম'
to_bangla_ordinal(999)   # '৯৯৯তম'

In practice#

# Class rankings
students = ["রাফি", "সিয়াম", "নাফিসা", "তাহমিনা"]
for i, name in enumerate(students, 1):
    print(f"{to_bangla_ordinal(i)} স্থান: {name}")
# ১ম স্থান: রাফি
# ২য় স্থান: সিয়াম
# ৩য় স্থান: নাফিসা
# ৪র্থ স্থান: তাহমিনা

# Exam question numbers
questions = range(1, 6)
for q in questions:
    print(f"{to_bangla_ordinal(q)} প্রশ্ন")
# ১ম প্রশ্ন … ৫ম প্রশ্ন

Error handling#

to_bangla_ordinal(0)    # ValueError: requires a positive integer
to_bangla_ordinal(-5)   # ValueError: requires a positive integer