Donavon Davis
Donavon Davis

Reputation: 1

Having trouble converting numbers to word form in python

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

Answers (2)

Jerrybibo
Jerrybibo

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

Krishan vir  singh
Krishan vir singh

Reputation: 110

import inflect p = inflect.engine() p.number_to_words(99) ninety-nine

Upvotes: 0

Related Questions