python 零基础 第018讲:了不起的分支和循环(V)
编程第一个:问题> 编写一个程序,求解 100~999 之间的所有水仙花数。
我的代码>
for number in range(100,999):
str_number = str(number)
if number == int(str_number) ** 3 + int(str_number) ** 3 + int(str_number) ** 3:
print(number)
思路想用切片来求值 但是运行不出来 希望大哥们帮助我 你的代码有一个小错误,在计算水仙花数时,应该是每一位数字的立方和等于原数才对。
改正后的代码如下:
for number in range(100, 999):
str_number = str(number)
# 分别计算百位、十位、个位数字的立方和
digit1 = int(str_number) ** 3
digit2 = int(str_number) ** 3
digit3 = int(str_number) ** 3
# 判断是否为水仙花数
if number == digit1 + digit2 + digit3:
print(number)
注意到水仙花数满足每个位上的数字的立方和等于原数,所以我们需要将三位数拆分成百位、十位和个位数字,并分别计算它们的立方和。最后将它们相加,与原数比较,判断是否为水仙花数。
希望能帮到你!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 jackz007 于 2023-12-28 20:16 编辑
for number in range(100,999):
str_number = str(number)
if number == int(str_number) ** 3 + int(str_number) ** 3 + int(str_number) ** 3 : #【错误】:3 个字符的字符串索引应该是 0、1、2。
print(number):
这是我改写的不用字符串的版本,谨供楼主参考
for number in range(100 , 1000):
if number == (number // 100) ** 3 + (number // 10 % 10) ** 3 + (number % 10) ** 3 :
print(number)
页:
[1]