2016-09-05 10 views
1

私はプログラミング割当のためにさまざまな金利のローンを比較するアプリケーションを作成しようとしています。私は一般的に私がやっていることを理解しているが、割り当てを完了することができますが、.format関数の問題が発生しています。私は結果として印刷できるように浮動体をフォーマットしようとしています。Python 3.5.1浮動小数点フォーマットの問題

# Prompts the user to enter a loan amount 
loan_amount = eval(input("Enter loan amount in dollars (exclude commas):")) 

# Prompts the user to enter a time period 
length_years = eval(input("Enter the amount of years as an integer:")) 

# Displays the header 
print("{0:20s}{1:20s}{2:20s}".format("Interest Rate", "Monthly Payment", 
             "Total Payment")) 

interest_rate = 5.0 
while (interest_rate <= 8.0): 
    monthly_interest_rate = interest_rate/12 
    monthly_payment = (monthly_interest_rate/100) * loan_amount 
    total_payment = ((interest_rate/100) * length_years) * loan_amount 
    print("{<20.6f}{<20.6f}{<20.6f}".format(interest_rate, monthly_payment, total_payment)) 
    interest_rate = interest_rate +.25 

そして、これは私が受信エラーである:ここに私のコードです

Enter loan amount in dollars (exclude commas):1000 
Enter the amount of years as an integer:10 
Traceback (most recent call last): 
Interest Rate  Monthly Payment  Total Payment  
    File "/Users/Andrew/PycharmProjects/PA1/pa1_main.py", line 45, in <module> 
    main() 
    File "/Users/Andrew/PycharmProjects/PA1/pa1_main.py", line 42, in main 
    print("{<20.6f}{<20.6f}{<20.6f}".format(interest_rate, monthly_payment, total_payment)) 
KeyError: '<20' 

Process finished with exit code 1 

答えて

3

あなたが番号を省略することができます(そして、それはあなたのための自動番号付けされます)、あなたはまだする必要がありフォーマット仕様から識別子を分離する:コロンを使用::セパレータなし

print("{:<20.6f}{:<20.6f}{:<20.6f}".format(interest_rate, monthly_payment, total_payment)) 

、Pythonは前にコンテンツを解釈します210を検索するためのキーワード引数として指定します(オブジェクトの属性として.6f)。

側の注意点として

loan_amount = float(input("Enter loan amount in dollars (exclude commas):")) 
length_years = int(input("Enter the amount of years as an integer:")) 
eval()を使用(および乱用するスクリプトを開いて)、私は int()(全体の数字のために)使用したいのではなく、かつ float()または decimal.Decimal()は正しい型に入力を変換します
+0

あなたは 'eval(input())'が悪いことを彼に伝えることができます。その場合は 'int(input())'を使うこと。 –

+0

@ Jean-FrançoisFabre:私はまだその部分に注意を払っていませんでした。私は確かに意志します。 –

+0

もちろん、 'eval'は悪(セキュリティ上の問題)なので、python 3で' input'が変更されたのです(セキュリティ上の問題もあります) –

関連する問題