甜萝 发表于 2022-5-28 19:57

判断五位数是否为回文数

本帖最后由 paypojie 于 2022-5-28 22:19 编辑

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

原文链接 https://www.runoob.com/python/python-exercise-example30.html

首先 定义一个变量 接收用户输入的内容 再进行条件判断 如果第一位和最后一位相等就继续判断 否则就输出 num 不是回文数
如果第二位和倒数第二位相等 就输出num 是回文数 否则就输出 num 不是回文数

流程图:



代码如下


num = input('请输入一个五位数:')
if len(num) == 5 and num.isdigit():
    if num == num[-1]:
      if num == num[-2]:
            print(num,'是回文数')
      else:
            print(num,'不是回文数')
    else:
      print(num,'不是回文数')
后来 我想能不能判断其他长度的数字是不是回文数 于是写出了以下代码 就不解释了 也比较简单
n = int(input('请输入个数:'))
n = str(n)
n1 = len(n)
d = ''
f = ''
if n1 % 2 == 0:
    for i in range(len(n) // 2):
      d += n
    for i in range(-1,-len(n) // 2 - 1,-1):
      f += n
    if d == f:
      print(n,'是回文数')
      print(n,'不是回文数')
else:
    for i in range((len(n) - 1) // 2):
      d += n
    for i in range(-1,-len(n) // 2,-1):
      f += n
    if d == f:
      print(n,'是回文数')
      print(n,'不是回文数')

甜萝 发表于 2022-5-28 20:06

https://www.runoob.com/python/python-exercise-example30.html
发帖时 链接弄了没反应

duandaxian 发表于 2022-5-28 20:10

哈,以后不用借助直感来判断了,收藏了,感谢楼主!

kesai 发表于 2022-5-28 20:23

咋不用reverse,直接就判断出来了啊

yep96 发表于 2022-5-28 20:31

s = input()
print("是回文" if s==s[::-1] else "不是回文")

或者逐一判断

s = input()
length = len(s)
for i in range(length // 2):
    if s != s:
      print("不是回文")
      break
else:
    print("是回文")

southward 发表于 2022-5-28 20:45

没看见第二个之前 看见第一个代码我人傻了哈哈

lys76 发表于 2022-5-28 20:45


arg = eval(input())# 将字符串转换为整数
print("是" if arg % 10 == arg // 10000 and arg // 10 % 10 == arg // 1000 % 10 else "不是")

lys76 发表于 2022-5-28 21:08

本帖最后由 lys76 于 2022-5-29 22:39 编辑

kesai 发表于 2022-5-28 20:23
咋不用reverse,直接就判断出来了啊
reverse直接修改原列表,并且没有返回值。
{:1_893:}抱歉了。是我才疏学浅,可以使用reversed。

s = input()
print("是回文数" if list(s) == else "不是回文数")

a525 发表于 2022-5-28 21:14

JAVA版本

熊猫拍板砖 发表于 2022-5-28 21:46

本帖最后由 熊猫拍板砖 于 2022-5-28 22:17 编辑

func isPalindrome(x int) bool {
      if x < 0 {
                return false
      }
      s := 0
      s1 := x
      for s1 > 0 {
                tmp := s1 % 10
                s1 = s1 / 10
                s = s*10 + tmp
      }
      if s == x {
                return true
      }
      return false
}
func isPalindrome(s string) bool {

   // 双指针,从前后开始遍历对比
   r := len(s) - 1
   size := len(s) >> 1
   for i := 0; i < size; i++ {
      if s != s {
         return false
      }
      r++
   }
   return true
}
页: [1] 2
查看完整版本: 判断五位数是否为回文数