這是很早以前學習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:轉載請注明文章出處。