当前位置:优草派 > 问答 > Python问答

判断水仙花数python代码

标签: Python  水仙花数  作者: dongge8180

回答:

水仙花数,也称为阿姆斯特朗数,是一个三位数,它的各位数字的立方和等于它本身。举个例子,153是一个水仙花数,因为1的立方加上5的立方加上3的立方等于153。在Python中,可以使用以下代码判断一个三位数是否为水仙花数:

```

num = int(input("请输入一个三位数:"))

sum = 0

temp = num

while temp > 0:

digit = temp % 10

sum += digit ** 3

temp //= 10

if num == sum:

print(num,"是水仙花数")

else:

print(num,"不是水仙花数")

```

下面我们从多个角度来分析这段代码。

1. 输入输出模块

第一行代码使用了input函数,让用户输入一个三位数。input函数可以接受用户的输入,并返回一个字符串。但是,由于我们需要进行数值计算,所以需要将输入的字符串转换为整数。这里使用了int函数将字符串转换为整数。如果用户输入的不是一个合法的三位数,会抛出ValueError异常。

第五行代码使用了print函数输出判断结果。print函数可以接受多个参数,并将它们转换为字符串输出。在这里,我们使用了逗号分隔的两个参数,第一个参数是需要输出的字符串,第二个参数是需要输出的数值变量。

2. 算法实现模块

第二行代码定义了一个变量sum,用来存储各位数字的立方和。在之后的while循环中,我们使用temp变量来存储输入的三位数,以便在循环结束后恢复原始值。

第三行代码使用了while循环,当temp变量大于0时执行循环体。在循环体中,我们使用了取模运算符%获取temp的个位数字,并将其赋值给digit变量。然后,我们使用幂运算符**计算digit的立方,并将其加到sum变量中。最后,我们使用整除运算符//将temp除以10,以便获取下一位数字。当temp变量等于0时,循环结束。

第六行代码使用了if条件语句,判断输入的三位数和sum变量是否相等。如果相等,则输出数值和“是水仙花数”的字符串;否则,输出数值和“不是水仙花数”的字符串。

3. 错误处理模块

在第一行代码中,我们使用了try...except语句来捕获可能抛出的ValueError异常。如果用户输入的不是一个合法的三位数,程序会输出“输入的不是三位数”的字符串,并提示用户重新输入。

```

while True:

try:

num = int(input("请输入一个三位数:"))

if 100 <= num <= 999:

break

else:

print("输入的不是三位数,请重新输入")

except ValueError:

print("输入的不是三位数,请重新输入")

```

在这段代码中,我们使用了一个无限循环,直到用户输入了一个合法的三位数为止。在每次循环中,我们使用try...except语句来捕获可能抛出的ValueError异常。如果用户输入的不是一个合法的三位数,程序会输出“输入的不是三位数”的字符串,并提示用户重新输入。如果用户输入的是一个合法的三位数,则跳出循环并将其赋值给num变量。

TOP 10
  • 周排行
  • 月排行