1. 程式人生 > >[Python3 練習] 001 溫度轉換1

[Python3 練習] 001 溫度轉換1

abr 4.2 編寫程序 用戶 轉換 end 編寫 inpu 輸出

題目:溫度轉換 I

(1) 描述

  • 溫度的刻畫有兩個不同體系:攝氏度 (Celsius) 和華氏度 (Fabrenheit)
  • 請編寫程序將用戶輸入的華氏度轉換為攝氏度,或將輸入的攝氏度轉換為華氏度
  • 轉換公式如下,C 表示攝氏度,F 表示華氏度????????????????????????????????????????????????????????????????????????????????????????????????

C = ( F - 32 ) / 1.8????????????????????????????????????????????????????????????????????????????????????????????????
F = C * 1.8 + 32???????????????????????????????????????????????????????????????????????????????????????????????

(2) 要求????????????????????????????????????????????????????????????????????????????????????????????

  • 輸入輸出的攝氏度可用 C 的大小寫字母結尾,溫度可以是整數或小數,如:12.34C 指 12.34 攝氏度
  • 輸入輸出的華氏度可用 F 的大小寫字母結尾,溫度可以是整數或小數,如:87.65F 指 87.65 華氏度
  • 輸出保留小數點後兩位,輸入格式錯誤時,輸出提示:輸出格式錯誤???????????????????????????????????????????????????????????????????????????????????????????????

(3) 程序

# 我的解法

num = input("請輸入想轉換的溫度值(以 C/F 結尾):")

if num.endswith(‘F‘) or num.endswith(‘f‘):
    F = float(num[:-1])
    C = (F - 32) / 1.8
    print("%4.2fC" % C)
elif num.endswith(‘C‘) or num.endswith(‘c‘):
    C = float(num[:-1])
    F = C * 1.8 + 32
    print("%4.2fF" % F)
else:
    print("輸入格式錯誤")
# 參考答案

#TempConvert.py
TempStr = input("請輸入帶有符號的溫度值: ")
if TempStr[-1] in [‘F‘, ‘f‘]:
    C = (eval(TempStr[0:-1]) - 32)/1.8
    print("轉換後的溫度是{:.2f}C".format(C))
elif TempStr[-1] in [‘C‘, ‘c‘]:
    F = 1.8*eval(TempStr[0:-1]) + 32
    print("轉換後的溫度是{:.2f}F".format(F))
else:
    print("輸入格式錯誤")

(4) 小結

  • 對比參考答案,我覺得至少有三點值得學習
  1. 用 in 判斷字符串末尾的方法
  2. 用 eval() 轉換字符串的方法
  3. 用 format() 格式化(我的 print 好象還在 C 裏沒拐出來)

題源:www.python123.io

[Python3 練習] 001 溫度轉換1