Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

주어진 시리즈에서 암스트롱 숫자를 필터링하는 프로그램을 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으로 설정하고 temp 변수를 생성하여 계열 요소를 하나씩 저장합니다. 아래에 정의되어 있습니다.

l = []
for val in data:
   armstrong = 0
   temp = val
  • while 루프를 만들고 temp> 0을 확인하고 temp%10으로 나머지를 계산합니다. 나머지의 세제곱을 취하여 암스트롱 값을 추가하고 루프를 종료하기 위해 0에 도달할 때까지 임시 값을 10으로 나눕니다. 아래에 정의되어 있습니다.

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