Number names: Difference between revisions

(→‎{{header|MAXScript}}: Added maxscript.)
Line 461:
 
== {{header|Python}} ==
<lang python>def spell_integer(n):
bl tens = [None, None, "m", "btwenty", "trthirty", "quadrforty",
"six", "sevenfifty", "eightsixty", "nineseventy", "teneighty", "elevenninety",]
 
small = ["zero", "one", "two", "three", "four", "five",
<lang python>def nonzero(c, n):
"six", "seven", "eight", "nine", "ten", "eleven",
if n == 0:
"twelve", "thirteen", "fourteen", "fifteen", "sixteen",
return ""
"sixteen", "seventeen", "eighteen", "nineteen"]
else:
return c + spell_integer(n)
 
tens bl = [None, None, "twentym", "b", "thirtytr", "fortyquadr",
"quint", "fiftysext", "sixtysept", "seventyoct", "eightynon", "ninetydec"]
 
<lang python> def nonzero(c, n):
small = ["zero", "one", "two", "three", "four", "five",
return "" if n == 0 else c + spell_integer(n)
"six", "seven", "eight", "nine", "ten", "eleven",
"twelve", "thirteen", "fourteen", "fifteen", "sixteen",
"seventeen", "eighteen", "nineteen"]
 
def big(e, n):
bl = [None, None, "m", "b", "tr", "quadr",
"quint", "sext", "sept",if "oct",e "non",== "dec"]0:
return spell_integer(n)
elif ne <== 201:
return spell_integer(n) + " thousand"
else:
return spell_integer(n) + " " + bl[e] + "illion"
 
def bigbase1000_rev(e, n):
''' Generates # generates the value of the digits of n in base 1000 (i.e. 3-digit chunks), in reverse. '''
if e == 0:
# (i.e. 3-digit chunks), in reverse.
return spell_integer(n)
elif e = while n != 10:
a n, br = divmod(n, 101000)
return spell_integer(n) + " thousand"
yield r
else:
return spell_integer(n) + " " + bl[e] + "illion"
 
if n ==< 0:
''' Generates the value of the digits of n in base 1000 (i.e. 3-digit chunks), in reverse. '''
raise ValueError, "spell_integer: negative input"
def base1000_rev(n):
while elif n !=< 020:
n, r = divmod(n, 1000)return small[n]
yieldelif rn < 100:
a, b = divmod(n, 10010)
return tens[a] + nonzero("-", b)
elif n < 1000:
a, b = divmod(n, 100)
return small[a] + " hundred" + nonzero(" ", b)
else:
return ", ".join(reversed([big(e, x) for e, x in enumerate(base1000_rev(n)) if x != 0]))</lang>
enumerate(base1000_rev(n)) if x][::-1])
 
# example
def spell_integer(n):
print spell_integer(1278)</lang>
if n < 0:
raise ValueError, "spell_integer: negative input"
elif n < 20:
return small[n]
elif n < 100:
a, b = divmod(n, 10)
return tens[a] + nonzero("-", b)
elif n < 1000:
a, b = divmod(n, 100)
return small[a] + " hundred" + nonzero(" ", b)
else:
return ", ".join(reversed([big(e, x) for e, x in enumerate(base1000_rev(n)) if x != 0]))</lang>
Anonymous user