Reputation: 1
I'm trying to convert numbers between 1 and 99 into word form, with numbers above twenty printed as "twenty-one", "twenty-two" and so on. Not sure what I'm missing in my code.
zero2nineteen = ['zero', 'one', 'two', 'three', 'four', 'five',
'six', 'seven', 'eight', 'nine', 'ten',
'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen',
'sixteen', 'seventeen', 'eighteen', 'nineteen']
zero2ninety = ['zero', 'ten', 'twenty', 'thirty', 'fourty',
'fifty', 'sixty', 'seventy', 'eighty', 'ninety']
def number(Number):
if (Number >= 1) or (Number <= 19):
return (zero2nineteen[Number])
elif (Number >= 20) or (Number <= 99):
return (zero2ninety[Number])
else:
print("Done")
def main():
Number = int(input("Please enter a number between 0 and 99: "))
number(Number)
main()
Upvotes: 0
Views: 76
Reputation: 1325
First, try to avoid using capitalized words for variable names - they are mostly used in class
definitions. Aside from that, your logic for the conversion is incorrect. Your number()
method would be modified like such in order to produce the correct results:
def number(n):
# 1. Rename variable
# 2. Change "or" to "and"
# If the number is between 0 and 19 (inclusive), refer directly to zero2nineteen list
if (n >= 0) and (n <= 19):
return (zero2nineteen[n])
# If the number is between 20 and 99 (inclusive):
elif (n >= 20) and (n <= 99):
# First check if the number is a multiple of ten
if not n % 10:
# If it is, refer directly to the zero2ninety list
return (zero2ninety[n // 10])
# Else, use the zero2ninety list in conjunction with zero2nineteen
return (zero2ninety[n // 10] + "-" + zero2nineteen[n % 10])
# If the number is not between 0 and 99 inclusive, exit
else:
print("Done")
Hope this helped!
Upvotes: 1
Reputation: 110
import inflect p = inflect.engine() p.number_to_words(99) ninety-nine
Upvotes: 0