3

練習用に単位変換器を作っています。現在、どのタイプの変換を行うか (距離、時間、質量など) を判断する関数を定義しました。

次に、型に適したコンバーターを呼び出し、変換元、変換先、および変換の値を尋ねます。

def mass_converter():
    convert_from = raw_input('What unit are you converting from? ')
    convert_to = raw_input('What unit are you converting to? ')
    value = raw_input('How many of those do you have? ')

    if convert_from == "pounds" and convert_to == "kilograms":
        answer = float(value) * 0.453592
        print "That many pounds is %d kilograms." % answer
    elif convert_from == "kilograms" and convert_to == "pounds":
        answer = float(value) * 2.20462
        print "That many kilograms is %d pounds." % answer
    else:
        print "You have not selected a valid unit; please try again."
        mass_converter()

現在、10 ポンドをキログラムに変換すると、答えは 4 キログラムになります。それは私の小数を切り落としているようです。明らかに int(value) も同じことを行います。ユーザーが入力した正確な値を保持するために何を使用できますか?

4

2 に答える 2

7

ここでの問題は%d、文字列の書式設定で書式修飾子を使用して、回答を整数にキャストしていることです。%f代わりに (または)を使用し%sます。

于 2012-08-31T18:37:41.303 に答える
2

%d の代わりに %f を使用できます。%d は数値を浮動小数点ではなく整数としてフォーマットします。または、使用することもできます

  print "That many kilograms is {} pounds.".format(answer)
于 2012-08-31T18:37:58.120 に答える