本帖最后由 coolliqing 于 2020-9-13 11:03 编辑
你那i的值是一个整形(int),是不能切片的,提供两个思路吧。
1.你可以把100转换成字符串 str(i) 或者列表list(i)这样就可以使用切片的方式分解这个数字了。
2.用100%10可以的到100的个位,同样再用10%10可以得到100的十位,再次用1%10可以得到100的百位,那么100,10,1可以用地板除法得到,用100//10得到10,再用10//10得到1.
这两个思路都可以解这道题。
按照楼主想法用切片方法实现的代码,把直接定义i的值换成了自己输入,可以参考一下(我也是菜鸟写的不好别喷

)。
- print('输入一个3位数判断是不是水仙花数')
- num = input('请输入一个三位数:')
- while (not num.isdigit()) or (len(num) > 3):
- num = input('输入错误,请重新输入:')
- num_1 = []
- for i in num:
- num_1.append(i)
- first_num = int(num_1[0])
- second_num = int(num_1[1])
- third_num = int(num_1[2])
- add_in = first_num**3 + second_num**3 + third_num**3
- if add_in == int(num):
- print(num,'是水仙花数哦')
- else:
- print(num,'不是水仙花数哦')
复制代码
用整除和地板除的思路又写了一个代码,如果对楼主有帮助记得给个最佳答案,谢谢
- print('输入一个3位数判断是不是水仙花数')
- num = input('请输入一个三位数:')
- while (not num.isdigit()) or (3 > len(num)) or (len(num) > 3:)
- num = input('输入错误,请重新输入:')
- num_1 =int(num)
- text = num_1
- sum = 0
- while text:
- sum = sum + (text%10) ** 3
- text //= 10
- if sum == num_1:
- print('%d是水仙花数哦'%(num_1))
- else:
- print('%d不是水仙花数哦'%(num_1))
复制代码