Tony540102689 2016-03-05 04:46 采纳率: 50%
浏览 3750
已结题

回数是指从左向右读和从右向左读都是一样的数,例如12321。请利用filter()滤掉非回数

def is_palindrome(n):
s = str(n)
for i in range(len(s)):
if s[i] == s[len(s)-1-i]:
return True
else:
return False

output = filter(is_palindrome, range(1, 1000))
print(list(output))

谁来解释一下原理啊,特别是

for i in range(len(s)):
if s[i] == s[len(s)-1-i]

  • 写回答

3条回答

  • xSeeker~ 2016-03-05 05:41
    关注

    过滤前的数最多是3位,所以实际上只判断第一位和最后一位数字是否相同,就可以判断是否是回文数,而循环只执行了1次就return了
    当数字是1位数时,判端s[0] == s[1-1-0]
    当数字是2位数时,判端s[0] == s[2-1-0]
    当数字是3位数时,判端s[0] == s[3-1-0]

    这个函数的写法太实用,如果数字是4位数甚至更多位,就会出错,下面的函数是我写的,仅供参考:

    def is_palindrome(n):
    s = str(n)
    for i in range(len(s)/2):
    if s[i] != s[len(s)-1-i]:
    return False
    return True

    评论

报告相同问题?

悬赏问题

  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求
  • ¥20 antv g6 折线边如何变为钝角
  • ¥30 如何在Matlab或Python中 设置饼图的高度
  • ¥15 nginx中的CORS策略应该如何配置
  • ¥30 信号与系统实验:采样定理分析