解题思路:
先把三位数(n)的3个数位值算出来
然后求数位数字的三次方之和
最后判断数位数字的三次方之和(sum)是否与该数(n)相同
代码:
# 输入一个三位数,求个个数位数字的三次方之和,并判断和是否与该数相同
n = input("输入一个三位数:") #输入一个三位数
n = int(n) #定义一个n强制转换为int型
n100 = int(n/100 %10) #定义一个n100强制转换为int型,值为n的百位
n10 = int(n/10 %10) #定义一个n10强制转换为int型,值为n的十位
n1 = int(n%10) #定义一个n1强制转换为int型,值为n的个位
sum = int(n100*n100*n100+n10*n10*n10+n1*n1*n1) #定义一个sum强制转换为int型,表示数位数字的三次方之和
if(sum == n): #判断和(sum)是否与该数(n)相同
print("相同")
else:
print("不同")
运行结果:
遇到的问题:
如果不用int强制转换,那么得到的结果都会是小数,会导致结果错误
新的解法:
数位求值不需要用强制转换,但要注意/和//的区别。
# 输入一个三位数,求个个数位数字的三次方之和,并判断和是否与该数相同
n = input("输入一个三位数:") #输入一个三位数
n = int(n) #定义一个n强制转换为int型
n100 = n//100 %10 #定义一个n100,值为n的百位
n10 = n//10 %10 #定义一个n10,值为n的十位
n1 = n%10 #定义一个n1,值为n的个位
sum = n100*n100*n100+n10*n10*n10+n1*n1*n1 #定义一个sum,表示数位数字的三次方之和
if(sum == n): #判断和(sum)是否与该数(n)相同
print("相同")
else:
print("不同")
新知识点:
python中与除法有关的三个运算符是// 和 / 和 %。
“/”:保留小数部分,例如5/2=2.5
“//”:不保留小数部分,例如5//2=2
“%”:取余数,例如6%2=0,7%2=1