编写一个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

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

  • 定义一个序列。

  • 创建一个空列表和一个for循环来访问所有序列数据。

  • 设置阿姆斯特朗数的初始值为0,并创建一个临时变量来逐个存储序列元素。定义如下:

l = []
for val in data:
   armstrong = 0
   temp = val
  • 创建一个while循环,检查temp>0,并计算temp%10的余数。通过对余数取立方来累加阿姆斯特朗数值,并将temp值除以10,直到它达到0以终止循环。定义如下:

while(temp>0):
   rem = temp % 10
   armstrong = armstrong + (rem**3)
   temp = temp // 10
  • 设置if条件来比较原始值和temp值。如果匹配,则将值添加到列表中。

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

更新于:2021年2月24日

251 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告