python反轉一個三位整數的多種實現方案

在LintCode上練習遇到這個問題,查閱資料找到多種方法,總結如下。

輸入 輸出
123 321

第一種:整數方法取餘取整實現

class Solution:
  """
  @param number: A 3-digit number.
  @return: Reversed number.
  """
  def reverseInteger(self, number):
    g = number%10     #取出個位數
    s = (int(number/10))%10  #取出十位數  
    b = int(number/100)     #取出百位數
    return g*100+s*10+b
if __name__ == "__main__":
  so = Solution()
  print (so.reverseInteger(123))

python不和C語言一樣自動截取保留整數,需要用 int 轉換一下

第二種:使用字符串切片

  def reverseInteger(self, number):
    number=str(number)
    result=number[::-1]
    result=(int(result))
    return result

借用字符串的方法處理

第三種:使用棧

def reverseInteger(self, number):
 number=str(number)#模擬入棧
    l=list(number)
    result=""
    while len(l)>0:
      result+=l.pop()#模擬出棧
    return int(result)

補充:Python程序:任意輸入一個三位數,然後把三位數的位置反轉輸出。

第一種方法

把輸入的三位數百位、十位和個位依次表示出來,然後將個位數字和百位數字進行交換。

#輸入number = 123,輸出321
number = int(input('請輸入一個三位數:'))
a = number%10 #個位
b = number//10%10 #十位
c = number//100 #百位
re_number = a*100 + b*10 + c
print('%d的反轉數是:%d'%(number,re_number)) #第一種輸出方式
print('{0}的反轉數是:{1}'.format(number,re_number)) #第二種輸出方式

第二種方法

將輸入的三位數以字符串的形式用list()方法列表化,然後逆序從列表中依次取出個位、十位、百位,輸出的時候註意將str類型轉換為int類型。

#輸入number = 123,輸出321
number = input('請輸入一個三位數:')
list1 = list(number) #將輸入的三位數的字符串存入列表
list1.reverse() #將列表元素反轉
a = int(list1[0]) #取出反轉後列表的元素並將其類型轉為int類型
b = int(list1[1])
c = int(list1[2]) #也可以不反轉列表,直接反著取出列表中的元素
re_number = a*100 + b*10 + c
print('%s的反轉數是:%s'%(number,re_number))
print('%d的反轉數是:%d'%(int(number),re_number))

以上就是我所想到的輸出3位數反轉數的方法,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: