題目一 整數的進制轉換
給定一個整數數字0x1010,請依次輸出Python語言中十六進制、十進制、八進制和二進制表示形式,使用英文逗号分隔。
初試錯誤:
print('{:x},{}{:o},{:b}'.format(0x1010))
正确結果:
print("0x{0:x},{0},0o{0:o},0b{0:b}".format(0x1010))
初試失敗之要點記錄:
1、str.format()方法中的參數索引号要寫進占位符/槽中
2、進制的引導符号需要添加數字前
進制種類 | 引導符号 | 聯想記憶 |
十進制 | 無 | 無 |
二進制 | 0b或0B | binary |
八進制 | 0o或0O | 橫躺8 |
十六進制 | 0x或0X | six |
題目二 溫度轉換溫度的刻畫有兩個不同體系:攝氏度(Celsius)和華氏度(Fabrenheit)。請編寫程式将使用者輸入華氏度轉換為攝氏度,或将輸入的攝氏度轉換為華氏度。轉換算法如下:(C表示攝氏度、F表示華氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 輸入輸出的攝氏度可采用大小寫字母C結尾,溫度可以是整數或小數,如:12.34C指攝氏度12.34度;
(2) 輸入輸出的華氏度可采用大小寫字母F結尾,溫度可以是整數或小數,如:87.65F指攝氏度87.65度;
(3) 輸出保留小數點後兩位,輸入格式錯誤時,輸出提示:輸入格式錯誤;
(4) 使用input()獲得測試用例輸入時,不要增加提示字元串。
初試失敗:
s = input()
#數字結果——!此處的條件語句文法錯誤!
result = eval(s[:-1])*1.8+32 if 'C'or'c'in s else (eval(s[:-1])-32 )/1.8#s[m:n]隻取到n-1
#字元機關
unit = 'F' if 'C'or'c'in s else 'C'#注意機關轉換
print('{0:.2f}{1}'.format(result,unit))
定位到 if <條件>文法錯誤,進行修改:清單['C','c']也可以寫作字元串'Cc'
s = input()
#數字結果——!此處的條件語句文法錯誤!
result = eval(s[:-1])*1.8+32 if s[-1] in ['C','c'] else (eval(s[:-1])-32 )/1.8#s[m:n]隻取到n-1
#字元機關
unit = 'F' if s[-1] in ['C','c'] else 'C'#注意機關轉換
print('{0:.2f}{1}'.format(result,unit))
添加異常提示,最終正确結果:
s = input()
#數字結果——!此處的條件語句文法錯誤!
result = eval(s[:-1])*1.8+32 if s[-1] in ['C','c'] else (eval(s[:-1])-32 )/1.8#s[m:n]隻取到n-1
#字元機關
unit = 'F' if s[-1] in ['C','c'] else 'C'#注意機關轉換
#仔細審題,注意輸入錯誤時列印提示
print('輸入格式錯誤') if s[-1] not in ['C','c','F','f'] else print('{0:.2f}{1}'.format(result,unit))
要點記錄:
1、二分支結構的簡單表達式:<表達式1> if <條件> else <表達式2>
<表達式2> 中省略指派等式,隻寫值
#注意<表達式2>中 token = 省略
token = "偶數" if s % 2 == 0 else "奇數"
2、str.format() 數字格式化
str.format()方法中的參數可以是字元串或數字格式,但要與占位符/槽中的操作比對。
例如以下代碼中,a隻能取數字,否則報錯:ValueError: Unknown format code 'f' for object of type 'str'
‘{:.2f}’.format(a)
print('{0:.2f}{1}'.format(12.345,'米'))
注意,這裡四舍五入了!