def main():
#Get amount of principal, apr, and # of years from user
princ = eval(input("Please enter the amount of principal in dollars "))
apr = eval(input("Please enter the annual interest rate percentage "))
years = eval(input("Please enter the number of years to maturity "))
#Convert apr to a decimal
decapr = apr / 100
#Use definite loop to calculate future value
for i in range(years):
princ = princ * (1 + decapr)
print('{0:5d} {0:5d}'.format(years, princ))
我试图在表格中打印年份和主要值,但是当我打印出来的所有内容都是两列10列。
答案 0 :(得分:2)
所以你有几个问题。第一个问题是显示问题。
您的输出语句print('{0:5d} {0:5d}'.format(years, princ))
有几个问题。
0
中的{0:5d}
表示以下值中的第0个元素,因此您实际打印两年,第二个应该是{{ 1}}而不是1
0
来打印应该是浮点值的内容,d是用于打印整数,您应该使用d
的内容,这意味着"用2位小数打印这个数字一旦你纠正了那些,你仍然会因为一个更微妙的问题而看到错误的答案。您使用整数值而不是浮点数执行除法,这意味着任何小数余数都会被截断,因此对于任何合理的apr,{1:.2f}
将评估为0。
您可以通过更正输入来解决此问题。 (作为旁注,在用户输入上运行eval通常是一个非常危险的想法,因为它将执行输入的任何代码。)而不是eval,使用apr / 100
和float
来指定什么类型的值应将输入转换为。
以下是实施上述修正的更正代码。
int