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