鱼C论坛

 找回密码
 立即注册
查看: 201|回复: 9

[已解决]回文数判定问题

[复制链接]
回帖奖励 4 鱼币 回复本帖可获得 1 鱼币奖励! 每人限 1 次
发表于 2024-9-22 15:39:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
python-018讲课后作业,判断一个整数是否为回文数,我编写代码如下:

i = int(input("请输入一个正整数:"))
temp = i
sum = 0
num_x = len(str(i))
print(num_x)   #我添加了输出i的位数做参考
while num_x >= 0:
    sum = sum + (temp % 10) * (10 ** (num_x - 1))
    num_x = num_x - 1
    temp = temp // 10
if sum == i:
    print(i,"是一个回文数",sep="")
else:
    print(i,"不是一个回文数",sep="")

问题:
测试发现,输入数字长度15位以内可以正常判定是否回文数,数字长度达到17位,输入回文数也会判定非回文数,大佬们这个是啥问题啊?
最佳答案
2024-9-22 15:43:46
你好!这个问题的主要原因是浮点数精度的限制。在 Python 中,当整数位数达到一定长度时,进行浮点数运算可能会导致精度损失,从而影响结果准确性。这在使用大数时尤为显著。

为了避免精度问题,可以采用字符串处理方式判断回文数。以下是改进版代码:
# 获取输入的正整数
i = input("请输入一个正整数:")

# 直接比较字符串与其反转后的字符串
if i == i[::-1]:
    print(i, "是一个回文数", sep="")
else:
    print(i, "不是一个回文数", sep="")

这段代码通过直接比较字符串与其反转后的字符串,实现了无论输入长度多大,都能准确判断是否为回文数的功能。希望这个答案对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
回文数.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-22 15:43:46 | 显示全部楼层    本楼为最佳答案   
你好!这个问题的主要原因是浮点数精度的限制。在 Python 中,当整数位数达到一定长度时,进行浮点数运算可能会导致精度损失,从而影响结果准确性。这在使用大数时尤为显著。

为了避免精度问题,可以采用字符串处理方式判断回文数。以下是改进版代码:
# 获取输入的正整数
i = input("请输入一个正整数:")

# 直接比较字符串与其反转后的字符串
if i == i[::-1]:
    print(i, "是一个回文数", sep="")
else:
    print(i, "不是一个回文数", sep="")

这段代码通过直接比较字符串与其反转后的字符串,实现了无论输入长度多大,都能准确判断是否为回文数的功能。希望这个答案对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

点评

我很赞同!: 5.0
我很赞同!: 5
感谢大佬  发表于 2024-9-22 15:47
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-24 13:55:28 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-24 14:50:58 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-26 14:06:34 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-28 17:12:14 | 显示全部楼层

回帖奖励 +1 鱼币

FishC 发表于 2024-9-22 15:43
你好!这个问题的主要原因是浮点数精度的限制。在 Python 中,当整数位数达到一定长度时,进行浮点数运算可 ...

1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-28 17:17:25 | 显示全部楼层


你好!要判断一个整数是否为回文数,可以采用字符串反转的方法,确保不会因为整数长度问题而出现判断错误。以下是简洁的代码示例:
# 获取输入的正整数
num = int(input("请输入一个正整数:"))

# 将整数转换为字符串
num_str = str(num)

# 直接比较字符串与其反转后的字符串
if num_str == num_str[::-1]:
    print(num, "是一个回文数")
else:
    print(num, "不是一个回文数")

解释:
1. `num_str = str(num)`:将输入的整数转换为字符串。
2. `num_str[::-1]`:利用字符串切片的特性,得到反转后的字符串。
3. 比较原字符串与反转后的字符串是否相等即可判断是否为回文数。

这种方法避免了浮点数精度问题,所以即使输入非常大的数字也能准确判断。希望这个回答对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-10-4 16:26:18 | 显示全部楼层

回帖奖励 +1 鱼币

6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-10-5 18:14:13 | 显示全部楼层

回帖奖励 +1 鱼币

啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 06:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表