利用Python实现倒序任意整数
这是很早以前学习C时候做过的一个练习题,题目的要求大概是把用户输入的三位数倒序输出,比如说用户输入123,然后程序应该输出的结果是321。如果遇到用户输入100,那么程序应该输出1。然后我给扩展一下,这个程序来适应于三位数以上的或者三位数以下的。
那么遇到这个问题,我首先的思路就是想办法把用户输入的数字给他拆开,然后放在列表里边。然后拿出来重新拼接一下就好了。所以我写好的前边的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 | #!/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(),这个函数的第一个参数接收一个函数用于处理列表,第二个参数接收的是要处理的列表。
意思是这样:
1 | reduce (f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) |
所以处理函数这么写的:
1 2 | def f(x, y): return x * 10 + y |
最终的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/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:转载请注明文章出处。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步