Python基础练习之一输出10000以内的阿姆斯特朗数

题目解析

要解这道题,首先我们要清楚阿姆斯特朗数是什么意思;阿姆斯特朗数是说如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。比如1^3^ + 5^3^ + 3^3^ = 153,1^4^+6^4^+3^4^+4^4^=1634

解题思路

1.利用for循环遍历1-10000
2.根据常识,1-9都是阿姆斯特朗数,直接输出即可
3.判断位数,进行数字拆分,使用除法和取余运算,得到各个位数上的数字
4.进行运算和判断

代码展示

#!/usr/bin/python3
#-*- coding:UTF-8 -*-

print("10000以内的阿姆斯特朗数有:")
for number in range(1, 10001):
    if  number < 10: #1-9都为阿姆斯特朗数,直接输出即可
        print(number)
    elif number < 100:
        n1 = number % 10 #取个位数
        n2 = int(number/10 % 10) #取十位数
        result = n1**2 + n2**2
        if number == result:
            print(number)
    elif number < 1000:
        n1 = number % 10
        n2 = int(number/10 % 10)
        n3 = int(number/100 % 10) #取千位数
        result = n1**3 + n2**3 + n3**3
        if number == result:
            print(number)
    elif number < 10000:
        n1 = number % 10
        n2 = int(number/10 % 10)
        n3 = int(number/100 % 10)
        n4 = int(number/1000 % 10) #取万位数
        result = n1**4 + n2**4 + n3**4 + n4**4 #各位数进行次方运算
        if number == result:
            print(number)

执行结果如下:
1
2
3
4
5
6
7
8
9
153
370
371
407
1634
8208
9474

最后总结

练习总结

1.练习for循环的运用
2.if的用法
3.取数字各位数上的数字

改进思考

1.在分解数字的时候,可以使用//进行整除,这样就不用再使用int函数转换了
2.在判断数字位数的时候,是否还有另外的办法,比如直接对5位数进行分解,然后从高位开始判断,知道某一位不等于0,即可判断数字位数,比如00124的时候,即为3位数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值