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('输入内容只能为数字')



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值