题目要求

输入一个整数,判断它是不是水仙花数

水仙花数是一个三位整数,其每位数字的立方和等于其本身,
例如,153 是一个水仙花数,153 = 1×1×1 + 5×5×5 + 3×3×3

输入格式:
输入一个整数

输出格式:
如果该数是水仙花数,则输出:“该数是水仙花数”
如果该数不是水仙花数,则输出:“该数不是水仙花数”
如果该数不是一个三位数,输出:“输入错误,不是一个三位数”

方法1

注意点:

  • 一开始将 n 转成 int 可以避免输入数字开头带 0,如 “000”
  • 利用 len(str(n)) == 3 判断 n 只能是三位数
n = int(input())
bai = n // 100  # python里注意是//(向下取整)
shi = n // 10 % 10
ge = n % 10
total = bai ** 3 + shi ** 3 + ge ** 3
if len(str(n)) != 3:  # 利用str()函数转换成字符串
    print("输入错误,不是一个三位数")
elif n == total:
    print("该数是水仙花数")
else:
    print("该数不是水仙花数")

方法2

s = input()
if s[0] != '0' and len(s) == 3:
    result = int(s[0])**3 + int(s[1])**3 + int(s[2])**3
    if int(s) == result:
        print("该数是水仙花数")
    else:
        print("该数不是水仙花数")
else:
    print("输入错误,不是一个三位数")

该方法的巧妙之处在于利用字符串可以直接取各个位转成 int 运算就行,但需要附加条件 s[0] != ‘0’ 避免输入数字开头带 0,如 “000”

学习时遇到的问题,分享一下自己的解法,仅供参考,如有问题欢迎指教。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐