溫度轉換異常處理
描述
溫度的刻畫有兩個不同體系:攝氏度(Celsius)和華氏度(Fabrenheit)。
請編寫程序將用戶輸入華氏度轉換為攝氏度,或將輸入的攝氏度轉換為華氏度。
轉換算法如下:(C表示攝氏度、F表示華氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求
(1) 輸入輸出的攝氏度采用大寫字母 C 或小寫字母 c 結尾,溫度可以是整數或小數,如:12.34C 指攝氏度 12.34 度;
(2) 輸入輸出的華氏度采用大寫字母 F 或小字字母 f 結尾,溫度可以是整數或小數,如:87.65F 指華氏度 87.65 度;
(3) 考慮異常輸入的問題,如輸入不合法則拋出異常;
(4) 使用input()獲得測試用例輸入時,不要增加提示字符串。
輸入格式
(1) 輸入輸出的攝氏度采用大寫字母 C 或小寫字母 c 結尾,溫度可以是整數或小數,如:12.34C 指攝氏度 12.34 度;
(2) 輸入輸出的華氏度采用大寫字母 F 或小字字母 f 結尾,溫度可以是整數或小數,如:87.65F 指華氏度 87.65 度;
(3) 考慮異常輸入的問題,如輸入不合法則拋出異常;
(4) 使用input()獲得測試用例輸入時,不要增加提示字符串。
輸出格式
輸入正常,輸出轉換后的溫度,保留小數點后2位小數。
當用戶輸入值末位不是“C、c、F、f”中的一個時,輸出"輸入錯誤,末位只能是'C','c','F','f'"
當檢測到NameError錯誤時輸出'試圖訪問的變量名不存在'
當檢測到SyntaxError 錯誤時輸出'存在語法錯誤'
代碼
try:
TempStr = input() # 獲取輸入
if TempStr[-1] in ['F', 'f']: # 判斷字符串最后一個是否是'F'或'f'
C = (eval(TempStr[:-1]) - 32) / 1.8 # 計算
print("{:.2f}C".format(C)) # 輸出兩位小數
elif TempStr[-1] in ['C', 'c']:
F = 1.8 * (eval(TempStr[:-1])) + 32
print("{:.2f}F".format(F))
else:
print("輸入錯誤,末位只能是'C','c','F','f'") # 輸入不對
except NameError: # 捕捉NameError錯誤
print('試圖訪問的變量名不存在')
except SyntaxError: # 捕捉SyntaxError錯誤
print('存在語法錯誤')