i=100 怎么提取i中的三个数字
def special():'寻找水仙花数如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。,'
i = 100
while 100<=i<=999:
if i == i**3 +i**3 +i**3:
print ('水仙花数为:'+str(i))
i += 1
else:
i += 1
报错了,错误是TypeError: 'int' object is not subscriptable i是int类型的,不支持下标呀,所以i这种的表示是错误的 本帖最后由 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的值换成了自己输入,可以参考一下(我也是菜鸟写的不好别喷{:10_312:} )。
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)
second_num = int(num_1)
third_num = int(num_1)
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)) coolliqing 发表于 2020-9-13 10:12
提供两个思路吧。
1.你可以把100转换成字符串 str(i) 或者列表list(i)这样就可以使用切片的方式分解这个数 ...
def special():
'寻找水仙花数如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。,'
i = 100
while 100<=i<=999:
i1 = (i // 100) ** 3
i2 = ((i // 10) % 10) ** 3
i3 = (i % 10) ** 3
if i == i1 + i2 + i3:
print(i)
i += 1
if __name__ == '__main__':
special() 弱弱的佳佳 发表于 2020-9-13 10:10
i是int类型的,不支持下标呀,所以i这种的表示是错误的
好滴,谢谢啦
页:
[1]