1. 程式人生 > >Python學習第一週 判斷一個數是否是阿姆斯特朗數

Python學習第一週 判斷一個數是否是阿姆斯特朗數

如果一個n位正整數等於這個正整數每一位數字n次方的和,如370 = 3^3+7^3+0^3,那麼則稱這個數為阿姆斯特朗數

方法一:最容易理解,這個方法是直接對字串進行處理,然後獲取每一位進行處理最後求和

程式的邏輯是首先判斷使用者輸入的內容是否為數字,如果不是會提醒使用者。如果為數字那麼首先獲取數字的長度,然後根據長度計算該數字每一位數的相應次方,然後求和,計算完畢後如果得出的和與使用者輸入的數字大小相同,那麼就輸出使用者輸入的數字為阿姆斯特朗數,否則提示不是阿姆斯特朗數

#!/usr/bin/python3
#-*- coding:UTF-8 -*-
data_input = input('請輸入數字') #獲取使用者輸入
length = len(data_input) #獲取輸入的長度
sum = 0 #計算輸入數字的每一位的次方和
if data_input.isdigit():
    for data in data_input:
        sum += int(data)**length
    if int(data_input) == sum:
        print('數字:' + data_input + '是阿姆斯特朗數')
    else:
        print('數字:' + data_input + '不是阿姆斯特朗數')
else:
    print('輸入內容只能為數字')


方法二:因為是獲取每一位,所以可以通過取餘的方式獲取每一位,例如獲取數字123的每一位數字

個位:123%10 = 3

123//10 = 12

十位:12%10 = 2

12//10 = 1

百位:1%10 = 1

剩下的只需要和方法一處理方法一樣,求出每一位數字相應的次方,然後求和最後進行比較就可以了

#!/usr/bin/python3
#-*- coding:UTF-8 -*-
data_input = input('請輸入數字') #獲取使用者輸入
length = len(data_input) #獲取輸入的長度
sum = 0 #求出的每一位的次方和
if data_input.isdigit():
    temp = int(data_input)  #將獲取的字串轉換為int
    while temp > 0:
        every = temp % 10
        sum += every ** length
        temp //= 10 #去掉輸入數字的最後一位
    if sum == int(data_input):
        print('數字' + data_input + '是阿姆斯特朗數')
    else:
        print('數字' + data_input + '不是阿姆斯特朗數')
else:
    print('輸入內容只能為數字')