編寫一個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 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.