利用Python實現倒序任意整數


這是很早以前學習C時候做過的一個練習題,題目的要求大概是把用戶輸入的三位數倒序輸出,比如說用戶輸入123,然后程序應該輸出的結果是321。如果遇到用戶輸入100,那么程序應該輸出1。然后我給擴展一下,這個程序來適應於三位數以上的或者三位數以下的。

 

那么遇到這個問題,我首先的思路就是想辦法把用戶輸入的數字給他拆開,然后放在列表里邊。然后拿出來重新拼接一下就好了。所以我寫好的前邊的代碼如下:

 

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-

number = int(raw_input("please input a number:"))

numlist = []

while 1:
    if number == 0:
        break
    numlist.append(number % 10)
    number = number / 10

 

這個時候我們打印numlist的值可以得到一個長度和數字位數相等的列表。

然后是拼接的過程,這里我想起來Python的高階函數reduce(),這個函數的第一個參數接收一個函數用於處理列表,第二個參數接收的是要處理的列表。

意思是這樣:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

 所以處理函數這么寫的:

def f(x, y):
    return x * 10 + y

 

最終的代碼:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

number = int(raw_input("please input a number:"))

numlist = []

result = 0

while 1:
    if number == 0:
        break
    numlist.append(number % 10)
    number = number / 10


def f(x, y):
    return x * 10 + y

print reduce(f, numlist)

 ps:轉載請注明文章出處。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM