Python学习笔记-List的使用

in #cn7 years ago (edited)

有这么一个实例

在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]

问题解决!

Sort:  

我也正在学习。

不好意思。因为网络原因,Blog发重复了。

我也正在学习。