题目要求
输入一个整数,判断它是不是水仙花数
水仙花数是一个三位整数,其每位数字的立方和等于其本身,
例如,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”
学习时遇到的问题,分享一下自己的解法,仅供参考,如有问题欢迎指教。
更多推荐