Converting input containing special character to float This is the beginning of my program that calculates simple interest. Interest rate will have the following format : 0.97 , 0.67 , 0.17 etc. They won't be bigger than 1. So if the user enter 9 for the interest, program will convert it to 0.09 (by dividing it by 100) . Also user can enter input using '/'. So program will convert input like 97/100 to 0.97.

I wrote the code below. It works but it seems to me that there might be a easier and more elegant solution to this. Maybe using more build-in functions etc. If you help me with that I would be very appreciated.

def toNum(interest):

    if '/' not in interest:
        if float(interest) &gt; 1:
            return float(interest)/100

        else:
            return float(interest)


    else:
        l= []
        n = 0
        count = 1

        list_interest=[]
        for e in interest:
            list_interest.append(e)

        for e in list_interest:

            if count == 1 or count == 3:
                l.append(e)
                count = count +1
                continue


            if e == '/':
                n = n + 1
                count = count +1
            else:
                l[n] = l[n] + e

        return int(l[0]) / int(l[1])









interest = input("Interest rate: ")
interest = toNum(interest)
print(interest)
For reading a fraction such as "97/100", you can use the fractions library.

For example:



from fractions import Fraction

f = Fraction("97/100")

print(float(f)) # prints 0.97


And because the constructor also takes a float, we can remove the check for /. Therefore, the final code is:

from fractions import Fraction

def toNum(interest):
    f = Fraction(interest)
    f = float(f)

    if f &gt; 1:
        f /= 100

    return f

print(toNum("97/100")) # prints 0.97
print(toNum(0.97)) # prints 0.97
print(toNum(9)) # prints 0.09