1. 程式人生 > >Python123——練習1:Python基本語法元素

Python123——練習1:Python基本語法元素

例項1:溫度轉換

題目要求:

溫度的刻畫有兩個不同體系:攝氏度(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()獲得測試用例輸入時,不要增加提示字串。

python程式碼實現:

#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("輸入格式錯誤")

程式碼分析:

(1)在python程式碼中,縮排是嚴格規定的,它是語法的一部分,一般用4個空格或1個Tab鍵的長度;

(2)python程式碼的註釋:  

         1)單行註釋:#..............

         2)多行註釋:'''.................

                                 .................

                                 .................'''

(3)命名規則:例如TempStr,命名由大小寫字母、數字、下劃線、漢字等字元組合而成。在命名時,python語言對大小寫時區分對待的,且首字元不能是數字,不能雨保留字相同。

(4)字串

      字串序號的正向和反向序號排列如下,正向從左開始,反向從右開始:

反向遞減序號 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
字串
正向遞增序號 0 1 2 3 4 5 6 7 8 9 10 11

      1)字串索引:例如程式碼中TempStr[-1], 具體格式是:

<字串>[M] 

                               M是序號,功能是返回字串中第M位的字元

      2)(拓展)字串切片:格式如下:

<字串>[M:N]

                                返回字串中某一段字元子串。

例如:TempStr[0:-1]   :  取出其中第0、.........、不到最後一個的字元子串

(5)列表型別

             由0個或多個數據組成的有序序列,列表使用[]表示,採用逗號分隔各元素,在上述程式中出現:['F','f']、['C'、'c']均是列表型別。

(6)判斷元素是否在類表中

            程式中的程式碼:  if TempStr[-1] in ['F','f']:

                                           C=(eval(TempStr[0:-1])-32)/1.8

判斷TempStr中的-1位置上的元素是否與列表中的某個元素相同。上述語句也是一種分支語句,若if中的條件是true,則執行冒號後的語句,否則跳過。

(7)函式

程式中:  input()、eval()、print()

(8)print()函式的格式化

  例如程式中:  print("轉換後的溫度是{:.2f}C".format(C))

上述是print函式的格式化格式,其中  {} 表示槽,後續變數填充到槽中,

                                                           {:.2f} 表示將變數C填充到這個位置時去小數點後2位。

例項2:溫度轉換||

題目要求:

溫度的刻畫有兩個不同體系:攝氏度(Celsius)和華氏度(Fabrenheit)。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬請編寫程式將使用者輸入華氏度轉換為攝氏度,或將輸入的攝氏度轉換為華氏度。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬轉換演算法如下:(C表示攝氏度、F表示華氏度)‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

                                              C = ( F - 32 ) / 1.8‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

                                               F = C * 1.8 + 32‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

要求如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

(1) 輸入輸出的攝氏度採用大寫字母C開頭,溫度可以是整數或小數,如:C12.34指攝氏度12.34度;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

(2) 輸入輸出的華氏度採用大寫字母F開頭,溫度可以是整數或小數,如:F87.65指攝氏度87.65度;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

(3) 不考慮異常輸入的問題,輸出保留小數點後兩位;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

(4) 使用input()獲得測試用例輸入時,不要增加提示字串。

python程式碼如下:

TempStr=input()
if TempStr[0] in ['F','f']:
    C=(eval(TempStr[1:])-32)/1.8
    print("C{:.2f}".format(C))
elif TempStr[0] in ['C','c']:
    F=1.8*eval(TempStr[1:])+32
    print("F{:.2f}".format(F))
else:
    print("輸入格式錯誤")

程式碼分析:這個例項變形,是將表示攝氏溫度和華氏溫度的大寫字母放到了開頭,因此需要改變字串索引和字串切片的位置,

      字串索引改變:

TempStr[-1]————>TempStr[0]

                                            提取開頭第一個字元,此處放的是F或C

     字串切片改變:

   再次重新說明下字串切片操作:

      定義:切片操作(slice)可以從一個字串中獲取子字串(字串的一部分)。我們使用一對方括號[]、起始偏移量start、終止偏移量end 以及可選的步長step 來定義一個分片

               格式: [start:end:step]

  •  [:] 提取從開頭(預設位置0)到結尾(預設位置-1)的整個字串;
  •  [start:] 從start 提取到結尾;
  • [:end] 此處提取從開頭直到不包括end的前一個字元;
  • [start:end] 從start 提取到不包括end的前一個字元;
  •  [start:end:step] 從start 提取到不包括end的前一個字元,每step 個字元提取一個。 

 以下是幾個特別的例子:

>>>number='ashdhnkknjjkokko'
#從-2位置開始到結尾對字串進行擷取
>>>number[-2:]
  'ko'

#從開頭到結尾,步長為5
>>>number[::5]
'anjo'

#將字串倒轉(reserve),通常設定步長為負數:
>>>number[::-1]
'okkokjjnkknhdhsa'

故本題變形改成:

            TempStr[0:-1]———————>TempStr[1:]

        print格式化改變:

   也就是將C或F放到字串的開頭:

                                    print("C{:.2f}".format(C))

例項3:貨幣轉換|

題目要求:

人民幣和美元是世界上通用的兩種貨幣之一,寫一個程式進行貨幣間幣值轉換,其中:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

人民幣和美元間匯率固定為:1美元 = 6.78人民幣。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

程式可以接受人民幣或美元輸入,轉換為美元或人民幣輸出。人民幣採用RMB表示,美元USD表示,符號和數值之間沒有空格。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

注意:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

(1) 這是一個OJ題目,獲得輸入請使用input() ;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

(2) 不提示輸出格式錯誤,結果小數點後保留兩位。

自己編寫的python程式碼實現: 

MoneyStr=input()
if MoneyStr[:3] in ['RMB']:
    USD=eval(MoneyStr[3:])/6.78
    print("USD{:.2f}".format(USD))
elif MoneyStr[:3] in ['USD']:
    RMB=eval(MoneyStr[3:])*6.78
    print("RMB{:.2f}".format(RMB))

參考程式碼:

CurStr = input()
if CurStr[:3] == "RMB":
    print("USD{:.2f}".format(eval(CurStr[3:])/6.78))
elif CurStr[:3] in ['USD']:
    print("RMB{:.2f}".format(eval(CurStr[3:])*6.78))

測試題目

第3題應該選D

若涉及侵權,請聯絡,立即刪除!!!!!!!!!!!!!!!