|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- num = 100
- temp = 0
- while num < 1000:
- temp = num
- a = temp % 10
- temp = temp / 10
- b = temp % 10
- temp = temp / 10
- c = temp % 10
- if num == pow(c,3)+pow(b,3)+pow(a,3):
- print(num)
- num+=1
复制代码
这个程序是尝试打印出在100到1000之间的所有水仙花数。水仙花数是指一个n位数,它的每位数字的n次幂之和等于它本身。
你的代码逻辑是正确的,但是在Python 3.x中,除法操作 / 返回的结果是浮点数。这就导致你在计算 temp / 10 后, temp 变成了浮点数,然后在后面的 % 取余操作中, temp 可能会因为浮点数的精度问题产生误差。
因此,你应该使用整除操作 // ,它返回的结果是整数。下面是修正后的代码:
- num = 100
- while num < 1000:
- temp = num
- a = temp % 10
- temp = temp // 10
- b = temp % 10
- temp = temp // 10
- c = temp % 10
- if num == pow(c,3)+pow(b,3)+pow(a,3):
- print(num)
- num+=1
复制代码
这个版本的代码应该可以正确地打印出100到1000之间的所有水仙花数。
请注意,在Python中,除法 / 和整除 // 是两个不同的操作。前者返回的结果是浮点数(即使两个操作数都是整数),后者返回的结果是整数。所以在处理涉及到整数和浮点数之间的转换的问题时,需要注意选择正确的操作。
|
|