我的代码有问题,但是我不知道怎么修改,想用切片的方式解决

img


水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身,例如:1^3 + 5^3+ 3^3 = 153。从键盘上输入三位数,请编写程序判断其是否为水仙花数。

你的代码第5行判断时 对n本身少用了一个 int()
方法有两大类,一种用字串,一种用整数

# 用字串做:
n = input()

a = int(n[0])
b = int(n[1])
c = int(n[2])

if a**3 + b**3 + c**3 == int(n):  #你对n本身少用了一个 int()
    print('yes')
else:
    print('no')

# 用整数做:
n = int(input())

a = n//100
b = (n-100*a)//10
c = n%10

if a**3 + b**3 + c**3 == n:
    print('yes')
else:
    print('no')

这个例子里切片只能对字符串使用, 所以 n = input() 就不要使用eval函数了,会把输入的字符串转换成整数,所以后面就不能再切片了

把eval去掉然后在if的双等号后面添加int转换试试看


n = input()
su = [int(i)**3 for i in n]
print("yes" if sum(su) == int(n) else "no")