3

私は無料のオンライン Python チュートリアルを受講しています。

華氏の温度 f を摂氏の温度 c に関連付ける次の 2 つの式を使用して、華氏の値を摂氏に、またはその逆に変換する温度変換器を作成します。

    f = c *  9/5 + 32
    c = (f -32)* 5/9 

入力は、 のように、浮動小数点数の直後に文字Fまたはが続く文字列になります。他の温度スケールに変換し、変換された値を同じ形式で出力する必要があります。たとえば、入力が "8F" の場合、出力は (おおよそ)である必要があり、入力が である場合、出力は である必要があります。C"13.2C""-13.333C""12.5C""54.5F"

私の答えはいつも少しずれています。たとえば-16.444444444444446C、正しい出力が-16.394444444444442C. フロートの使用方法に問題はありますか? 私のコードは次のとおりです。

def celsiusCon(farenheit):
   return (farenheit - 32)*(5/9)
def farenheitCon(celsius):
   return ((celsius*(9/5)) + 32)

inputStr = input()
inputDig = float(inputStr[0:-2])
if inputStr[-1] == 'C':
   celsius = inputDig
   print(farenheitCon(celsius),'F',sep ='')
if inputStr[-1] == 'F':
   farenheit = inputDig
   print(celsiusCon(farenheit),'C', sep='')
4

3 に答える 3

9

最後の 1 文字だけでなく、最後の2文字を切り捨てています。

inputDig = float(inputStr[0:-2])

次のようにする必要があります。

inputDig = float(inputStr[0:-1])

これはあなたの精度の問題を説明しています:

>>> celsiusCon(2.4)
-16.444444444444446
>>> celsiusCon(2.49)
-16.394444444444446

スライスは最後からカウントされるため:-2、ユニットと最後の桁の両方のカットにスライスします。

>>> '2.49F'[:-2]
'2.4'
>>> '2.49F'[:-1]
'2.49'
于 2013-09-13T07:19:16.247 に答える