回文数

此生再无相见时 提交于 2020-12-20 05:08:10

问题描述:

“回文数”是一种数字。如:98789,这个数字正读是98789,倒读也是98789,正读倒读一样,所以这个数字就是回文数。
编程判断一个数是否是回文数。

 

我的代码:

n=list(raw_input("please input a number: "))
zx=dx=[]
zx=n
dx=n[::-1]
for i in range(len(n)/2):
   if zx[i]==dx[i]:
      print "%d's number is a Palindrome number..." %(i+1)
   else:
      print "%d's number is not a Palindrome number..." %(i+1)

 

我的思路:

首先让输入的字符格式的数字list化,得到一个包含各数字的列表,此时的列表是正向的,赋值给zx,然后使用切片的方式翻转原列表并赋给dx,这样就得到了正序和倒序的列表;

比较的时候是直接比较两个列表的元素的,而且比较次数为列表长度除以2,如3位数121只比较一次1即可,4位数如1221比较1和2两次即可。

 

示例代码:

def fun(n):
    a = []
    while n:
        a.append(n % 10)
        n /= 10
    for i in xrange(len(a)):
        if a[i] != a[-i-1]:
            break
    else: 
         print u'回文数'
         return True
    print u'非回文数'
    return False
fun(78987)

代码分析:

示例代码中的while循环来判断数的位数也就是比较次数,下面的for循环根据数的位数分别进行判断是否为回文数;

 

总结:

1.reverse方法

将列表中元素反转,不会对列表内元素进行排序操作,例如:

>>> a=[1,2,3,4,5]
>>> a
[1, 2, 3, 4, 5]
>>> b=a.reverse()
>>> print b
None
>>> b
[1, 2, 3, 4, 5]
>>> b.reverse()
>>> b
[5, 4, 3, 2, 1]

 

reverse之后原值被改变,且不能进行赋值操作;

 

2.sort方法

对列表内容进行正向排序,排序后的新列表会覆盖原列表(id不变),例如:

>>> a=[1,3,2,5,4]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5]
>>> b=a.sort()
>>> b
>>> print b
None

 

sort之后对列表进行正向排序,而且不会保存原来的列表,也不能进行赋值操作;

3.sorted方法

即可以保留原列表,又能得到已经排序好的列表,例如:

>>> a=[1,3,5,2,4]
>>> b=sorted(a)
>>> b
[1, 2, 3, 4, 5]
>>> a
[1, 3, 5, 2, 4]
>>>

sorted之后既保留了原列表也得到了排序好的表,且能进行赋值操作;

4.原地翻转列表

4.1切片方式

>>> a[::-1]
[4, 2, 5, 3, 1]
>>> b=a[::-1]
>>> b
[4, 2, 5, 3, 1]

4.2reverse方式

 

>>> a
[1, 3, 5, 2, 4]
>>> a.reverse()
>>> a
[4, 2, 5, 3, 1]

 

 

题目出处:http://www.cheemoedu.com/exercise/64

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!