Python|進位轉換

  • 2019 年 12 月 24 日
  • 筆記

問題描述

輸入一組M進位數的整數,將其轉換為L進位後,統計其中的最大值和最小值並輸出。

輸入說明:第一行是整數N、M和L, N表示這組數的個數, M表示輸入數字的進位(可能是2, 8, 10) ,

將其轉換為L進位(可能是2, 8, 10)

輸出說明:轉換後的L進位數中的最大值和最小值,中間用空格隔開。

輸入樣例: 6 10 8

15 9 10 3 6 7

輸出樣例: 17 3

解決方案

1 樣式理解:

第一行第一個表示下一行有多少個數,第二個表示輸入數的進位,第三個表示要轉換的進位

2 輸入值的處理:

用input輸入的都是字元串 但這個字元串包含額三個值所以要用split把字元串切片split的用法可以看我的另外一篇部落格

3 對應進位的處理:

因為不同的M,L對應的進位轉化不同,所以我們定義一個函數來處理不同的ML情況下的進位轉換,由十進位轉其他進位或其他進位轉十進位都有相關內置函數

其他進位可以先轉為十進位再轉其他進位

4 最大值處理:

把轉化好的數放入一個列表中 用max函數輸出最大值

5 輸出處理:

因為進位內置函數轉換後會有前綴 所以可以把他轉成字元串輸出前綴後面的數

Python程式碼:

N,M,L=input().split(' ')list1=input().split(' ')box=[]def jinzhi(i): if M=='10': if L=='8': return oct(i) if L=='2': return bin(i) if M=='8': if L=='10': return int(i,8) if L=='2': return bin(i) if M=='2': if L=='10': return int(i,2) if L=='8': return oct(i)for i in list1: i=int(i) box.append(i)x,y=jinzhi(max(box)),jinzhi(min(box))print(str(x)[2:],str(y)[2:])

END

實習編輯 | 王楠嵐

責 編 | 王自強