菜鸟教程 Python100例 之实例29

学习编程的路,走得好艰辛。。。

为了巩固基础知识,把菜鸟教程网上的实例拿来练习。。

在做到实例29时,看了网站给出的代码,觉得可以加强一下功能,不由得动了一下脑筋,如下:

原文题目:

题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

程序分析:学会分解出每一位数。

网站给出的参考代码:

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 
 4 x = int(raw_input("请输入一个数:
"))
 5 a = x / 10000
 6 b = x % 10000 / 1000
 7 c = x % 1000 / 100
 8 d = x % 100 / 10
 9 e = x % 10
10 
11 if a != 0:
12     print "5 位数:",e,d,c,b,a
13 elif b != 0:
14     print "4 位数:",e,d,c,b,
15 elif c != 0:
16     print "3 位数:",e,d,c
17 elif d != 0:
18     print "2 位数:",e,d
19 else:
20     print "1 位数:",e 

参考代码的功能太简单,只能检测5位数以内的整数,如果按这种逻辑写,十位如何,百位又当如何,动了一下脑筋,使用递归,可以实现N位数检测,并反转显示,代码如下:

#! /usr/bin/env python
# -*- coding: utf-8 -*-
n = raw_input("Input the number: ")
s = list(n)
l = len(str(n))
def output(s,l):
	if l == 0:
		return
	print s[l - 1]
	output(s,l - 1)

output(s,l)
print '"%s" is %d digits' % (n,l)

 还有一种思路,将输入的数字转成列表。

原文地址:https://www.cnblogs.com/rousi/p/5254775.html