C语言求金蝉素数,回文数 - 寂寞暴走伤的个人空间 - OSCHINA - 中文开源技术交流社区...

问题描述:

“回文数”是一种数字。如: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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值