Python學習第一週 判斷一個數是否是阿姆斯特朗數
阿新 • • 發佈:2018-11-08
如果一個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('輸入內容只能為數字')