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