有这么一个实例
在Runoob网Python 练习实例29有这么一个实例:
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
程序分析:学会分解出每一位数。
程序源代码:
!/usr/bin/python
-- coding: UTF-8 --
x = int(raw_input("请输入一个数:\n"))
a = x / 10000
b = x % 10000 / 1000
c = x % 1000 / 100
d = x % 100 / 10
e = x % 10
if a != 0:
print "5 位数:",e,d,c,b,a
elif b != 0:
print "4 位数:",e,d,c,b,
elif c != 0:
print "3 位数:",e,d,c
elif d != 0:
print "2 位数:",e,d
else:
print "1 位数:",e
以上实例输出结果为:
请输入一个数:
23459
5 位数: 9 5 4 3 2
如何用List解决该问题?
上述代码略显拖沓,那么如何用List解决该问题呢?
代码如下:
注意!版本为Python3.6.2
def separate_digit(a_num):
a_list = [] # 一个空的List
while a_num % 10 != 0: # 对a_num取模,如果不为0,则循环
a_list.append(a_num % 10) # 将取模的结果加入到List
a_num //= 10 # 除以10,取整数
return a_list
thisNum = int(input("请输入一个数:\n"))
thisList = separate_digit(thisNum)
print("位数为:", thisList.len())
print("逆序打印:", thisList)
print("正序打印:", thisList.reverse())
运行结果为:
请输入一个数:
123
位数为: 3
逆序打印: [3, 2, 1]
正序打印: None
值得注意的是,正序打印出了“None”,说明reverse的用法不对。
经查询得知,该方法没有返回值,但是会对列表的元素进行反向排序。
故修改代码为:``
注意!版本为Python3.6.2
def separate_digit(a_num):
a_list = [] # 一个空的List
while a_num % 10 != 0: # 对a_num取模,如果不为0,则循环
a_list.append(a_num % 10) # 将取模的结果加入到List
a_num //= 10 # 除以10,取整数
return a_list
thisNum = int(input("请输入一个数:\n"))
thisList = separate_digit(thisNum)
print("位数为:", thisList.len())
print("逆序打印:", thisList)
thisList.reverse()
print("正序打印:", thisList)
运行结果为:
请输入一个数:
123
位数为: 3
逆序打印: [3, 2, 1]
正序打印: [1, 2, 3]
我也正在学习。
不好意思。因为网络原因,Blog发重复了。
我也正在学习。