用Python编写程序以过滤给定序列中的阿姆斯壮数

假设您有一个序列以及用于过滤阿姆斯特朗数的结果,

original series is
0    153
1    323
2    371
3    420
4    500
dtype: int64
Armstrong numbers are:-
0    153
2    371
dtype: int64

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个系列。

  • 创建一个空列表并设置循环以访问所有系列数据。

  • 将armstrong初始值设置为0,并创建临时变量以逐一存储系列元素。它的定义如下

l = []
for val in data:
   armstrong = 0
   temp = val

  • 创建while循环,并检查temp> 0并按temp%10计算余数。通过取余数的立方来添加armstrong值,然后将温度值除以10,直到达到0,以终止循环。它的定义如下

while(temp>0):
   rem = temp % 10
   armstrong = armstrong + (rem**3)
   temp = temp // 10

  • 设置是否将原始值与温度值进行比较的条件。如果匹配,则将值附加到列表中。

if(armstrong==val):
   l.append(val)

  • 最后,使用来检查系列中存在的列表值isin()。它的定义如下

data[data.isin(l)]

例子

让我们看下面的代码以获得更好的实现-

import pandas as pd
data = pd.Series([153,323,371,420,500])
print("original series is\n", data)
l = []
for val in data:
   armstrong = 0
   temp = val
   while(temp>0):
      rem = temp % 10
      armstrong = armstrong + (rem**3)
      temp = temp // 10
   if(armstrong==val):
      l.append(val)
print("Armstrong numbers are:-")
print(data[data.isin(l)])

输出

original series is
0    153
1    323
2    371
3    420
4    500
dtype: int64
Armstrong numbers are:-
0    153
2    371
dtype: int64

猜你喜欢