回文数判断python五位数_【python_string】遍历所有六位数并确定回文数

问题描述:

有一天,我正在高速公路上开车,我偶然注意到我的里程表。和大多数里程表一样,它只显示6位数字的整数英里数。 所以,如果我的车开了300,000英里,我能够看到的数字是:3-0-0-0-0-0。

我当天看到的里程数非常有意思。我注意到后四位数字是回文数;也就是说,正序读和逆序读是一样的。例如,5-4-4-5就是回文数。 所以我的里程数可能是3-1-5-4-4-5。

一英里后,后五位数字变成了回文数。例如,里程数可能变成了是3-6-5-4-5-6。又过了一英里后,6位数字的中间四位变成了回文数。 你相信吗?一英里后,所有的6位数字都变成了回文数。

那么问题来了,当我第一次看到里程表时,里程数是多少?

《Car Talk》http://www.cartalk.com/content/puzzlers

解决思路:

首先,需要一个程序能够判断输入的字符串是否是回文数

def huiwen(a):

l=len(a)

count=0

for i in range(0,l-1):

if a[i]!=a[-i-1]:

count=count+1

print(a[i],a[-i])

break

i=i+1

if count!=0:

print('no')

return False

else:

print('yes')

return True

(程序思路是拿出词语中的每一个字母比较,有不符合条件的就拿出,计数+1)

第二步,在问题中我需要的是首先判断一个六位数的末尾四位是否是回文数,我需要一个函数进行切片,并且判断最后的几位是否是回文数。

def last_hui(a):

t=a[2:6]

if(huiwen(t)==True):

print('yes2')

第三步,判断加一后是否成立,然后遍历判断

def last_hui(a):

t=a[2:6]

g=int(a)

g=g+1

gl=str(g)

if(huiwen(t)==True):

if(huiwen(gl[1:6])==True):

print(a)

i=100000

for i in range(100000,1000000):

i=str(i)

last_hui(i)

i=int(i)

i=i+1

第四步,重复以上过程得到第三步,运行整个程序

def huiwen(a):

l=len(a)

count=0

for i in range(0,l-1):

if a[i]!=a[-i-1]:

count=count+1

break

i=i+1

if count!=0:

return False

else:

return True

def last_hui(a):

t=a[2:6]

g=int(a)

g=g+1

gl=str(g)

if(huiwen(t)==True):

if(huiwen(gl[1:6])==True):

g=int(g)+1

gl=str(g)

if(huiwen(gl[1:5])==True):

g=int(g)+1

gl=str(g)

if(huiwen(gl)==True):

print(a)

i=100000

for i in range(100000,1000000):

i=str(i)

last_hui(i)

i=int(i)

i=i+1

得到答案,第一次看里程表的时候的里程数可能是:

198888

199999

little tips:

字符串截取:a[2:6](截取后四位)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值