使用/用户输入的本金,利息和长度计算未来价值

时间:2014-01-21 05:28:40

标签: python decimal percentage

principal = float(input("Enter the initial principle: ")) #users input
years = int(input("Enter the number of years as a whole number: ")) #users input
apr = float(input("Enter the interest rate: ")) #users input

    principal = principal * (1.0+interest)
    principal = round(principal, 2)
print ("The value is: $",principal)

我不知道如何允许用户输入APR的百分比或小数答案。我做的最远的是一个带有.format的循环的开始,直到几个小时之前我才知道它是不存在的。简单的解决方案只是告诉他们使用小数,但我想要合并一些东西有点复杂(不幸的是对我而言太复杂了) 那么有人可以解释我如何告诉程序如何解读小数答案和百分比答案?以及如何将百分比答案更改为小数进行计算?

3 个答案:

答案 0 :(得分:0)

如果你正在使用Python 3,那么input会返回一个字符串。您可以将其传递给查找百分号的函数,而不是将其直接传递给float,例如

>>> def parse_decimal_or_percentage(s):
...     val = float(s.strip('%')) # strip any % symbols and convert to float
...     if s.endswith('%'): val /= 100.0 # divide by 100 if string ends with % symbol
...     return val
... 

>>> parse_decimal_or_percentage('0.11')
0.11
>>> parse_decimal_or_percentage('0.11%')
0.0011
>>> parse_decimal_or_percentage('11%')
0.11

如果你正在使用Python 2,那么你应该使用raw_input

答案 1 :(得分:0)

您可以使用正则表达式:

import re

st=input('Enter decimal or percent:')   

m=re.match(r'\s*([-+]?[0-9]*\.?[0-9]+)(%)?', st)

if m:
    apr=float(m.group(1))
    if m.group(2):
        apr/=100.0
    print(apr)

如果您输入0.2222%.22+22%等,则在将其转移到float后,会将其解析为相同的浮点值0.22 。 %的存在除以100.0以获得调整后的值。

答案 2 :(得分:0)

这是另一个,请注意,不检查用户是否输入了无效数据。

interest = raw_input("Enter the interest rate: ") #users input
intr = 0.0

#check inf interest has %
if interest.endswith('%'):
    intr = float(interest[:-1])
else:
    intr = float(interest)

principal = principal * (1.0+intr)