菜鸟教程 -- 学的不仅是技术,更是梦想!

Python 3 教程
Python3 教程 Python3 简介 Python3 环境搭建 Python3 VScode Python3 基础语法 Python3 基本数据类型 Python3 数据类型转换 Python3 解释器 Python3 注释 Python3 运算符 Python3 数字(Number) Python3 字符串 Python3 列表 Python3 元组 Python3 字典 Python3 集合 Python3 条件控制 Python3 循环语句 Python3 编程第一步 Python3 推导式 Python3 迭代器与生成器 Python3 with Python3 函数 Python3 lambda Python3 装饰器 Python3 数据结构 Python3 模块 Python __name__ Python3 输入和输出 Python3 File Python3 OS Python3 错误和异常 Python3 面向对象 Python3 命名空间/作用域 Python 虚拟环境的创建 Python 类型注解 Python3 标准库概览 Python3 实例 Python 测验

Python3 高级教程

Python3 正则表达式 Python3 CGI编程 Python3 MySQL(mysql-connector) Python3 MySQL(PyMySQL) Python3 网络编程 Python3 SMTP发送邮件 Python3 多线程 Python3 XML 解析 Python3 JSON Python3 日期和时间 Python3 内置函数 Python3 MongoDB Python3 urllib Python uWSGI 安装配置 Python3 pip Python3 operator Python math Python requests Python random Python OpenAI Python 有用的资源 Python AI 绘画 Python statistics Python hashlib Python 量化 Python pyecharts Python selenium 库 Python 爬虫 Python Scrapy 库 Python Markdown Python sys 模块 Python Pickle 模块 Python subprocess 模块 Python queue 模块 Python StringIO 模块 Python logging 模块 Python datetime 模块 Python re 模块 Python csv 模块 Python threading 模块 Python asyncio 模块 Python PyQt Python for 循环 Python while 循环
(追記) (追記ここまで)

Python 阿姆斯特朗数

Document 对象参考手册 Python3 实例

如果一个 n 位正整数等于其各位数字的 n 次方之和,则称该数为阿姆斯特朗数。 例如 1^3 + 5^3 + 3^3 = 153

1000 以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。

以下代码用于检测用户输入的数字是否为阿姆斯特朗数:

实例(Python 3.0+)

# Filename : test.py# author by : www.runoob.com# Python 检测用户输入的数字是否为阿姆斯特朗数# 获取用户输入的数字num = int(input("请输入一个数字: "))# 初始化变量 sumsum = 0# 指数n = len(str(num))# 检测temp = numwhiletemp > 0: digit = temp % 10sum += digit ** ntemp //= 10# 输出结果ifnum == sum: print(num,"是阿姆斯特朗数")else: print(num,"不是阿姆斯特朗数")

执行以上代码输出结果为:

$ python3 test.py 
请输入一个数字: 345
345 不是阿姆斯特朗数
$ python3 test.py 
请输入一个数字: 153
153 是阿姆斯特朗数
$ python3 test.py 
请输入一个数字: 1634
1634 是阿姆斯特朗数

获取指定期间内的阿姆斯特朗数

实例(Python 3.0+)

# Filename :test.py# author by : www.runoob.com# 获取用户输入数字lower = int(input("最小值: "))upper = int(input("最大值: "))fornuminrange(lower,upper + 1): # 初始化 sumsum = 0# 指数n = len(str(num))# 检测temp = numwhiletemp > 0: digit = temp % 10sum += digit ** ntemp //= 10ifnum == sum: print(num)

执行以上代码输出结果为:

最小值: 1
最大值: 10000
1
2
3
4
5
6
7
8
9
153
370
371
407
1634
8208
9474

以上实例中我们输出了 1 到 10000 之间的阿姆斯特朗数。

Document 对象参考手册 Python3 实例

AI 思考中...

8 篇笔记 写笔记

  1. #0

    大庆

    daq***[email protected]

    6

    参考方法:

    # 获取小于指定数字的阿姆斯特朗数
    num = int(input("pleace input a number: "))
    sum=0
    i=0
    arr=[0,0,0,0,0]
    print(num)
    for k in range(1,num):
     n = len(str(k))
     m = n;
     #print(m,"->",k,"\n");
     i=0;
     sum=0
     while m > 0:
     m -= 1
     arr[i] = int(k / 10 ** m) % 10
     sum += arr[i] **n
     i += 1
     if k==sum:
     print(k,end=",")

    大庆

    daq***[email protected]

    9年前 (2017年07月27日)
  2. #0

    728***[email protected]

    2

    参考方法:

    #以下代码用于检测用户输入的数字是否为阿姆斯特朗数
    import math
    x=int(input('请输入一个正整数:'))
    x1=x
    n=len(str(x))
    p=0
    for i in range(1,n+1):
     y=math.floor(x//pow(10,n-i))
     print(y,end=',')
     m=pow(y,n)# 也可以表达为: m=y**n
     p=m+p
     x=x%pow(10,n-i)
    print(p)
    if p == x1:
     print('输入的数字 %d 是一个阿姆斯特朗数'%x1)
    elif p!=x1:
     print('输入的数字 %d 不是一个阿姆斯特朗数'%x1)

    728***[email protected]

    9年前 (2017年08月14日)
  3. #0

    Santana

    378***[email protected]

    57

    获取指定期间内的阿姆斯特朗数

    lower=int(input("Please input a number: "))
    upper=int(input("Please input a number: "))
    sum=0
    for num in range(lower,upper):
     l = len(str(num))
     for n in str(num):
     sum=sum+int(n)**l
     if num==sum:
     print(num)
     sum=0

    Santana

    378***[email protected]

    9年前 (2017年09月09日)
  4. #0

    VET_chen

    513***[email protected]

    12

    参考方法:

    #计算阿姆斯特朗数
    count = 0 
    number = int(input('请输入一个正整数:')) #输入值并强制类型转换
    lenth = len(str(number)) #获取输入数字位数
    list_number = list(str(number)) #将数字转化为列表
    for i in list_number: #将列表中的每一个元素以该元素的lenth次幂累加至count
     i = int(i)
     i = i**lenth
     count = count + i
    if count == number: #判断count与输入的数字是否相等,若相等则为阿姆斯特朗数
     print('是阿姆斯特朗数')
    else:
     print('不是阿姆斯特朗数')

    VET_chen

    513***[email protected]

    8年前 (2018年08月30日)
  5. #0

    ykykyukai

    axp***@126.com

    35

    使用 lambda 表达式:

    def is_armstrong(n):
     s = sum(map(lambda x: eval(x)**len(str(n)), str(n)))
     return s == n
    B = []
    for i in range(1000):
     if is_armstrong(i):
     B.append(i)
    print(B)

    输出:

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407]

    使用 list 的映射解析来进一步简化代码:

    def is_armstrong(n):
     return n == sum([eval(i)**len(str(n)) for i in str(n)])
    B = [i for i in range(100000) if is_armstrong(i)]
    print(B)

    输出:

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407, 1634, 8208, 9474, 54748, 92727, 93084]

    ykykyukai

    axp***@126.com

    8年前 (2018年09月30日)
  6. #0

    小菜鸡就是我

    238***[email protected]

    1

    检查输入是否合法:

    while(True):
     try:
     lower = int(input("最小值: "))
     upper = int(input("最大值: "))
     except ValueError:
     print("非法输入")
     continue
     if lower>upper:
     print("请检查输入大小")
     continue
     for num in range(lower, upper + 1):
     sum = 0
     n = len(str(num))
     temp = num
     while temp > 0:
     digit = temp % 10
     sum += digit ** n
     temp //= 10
     if num == sum:
     print(num)
     break
    

    小菜鸡就是我

    238***[email protected]

    7年前 (2019年05月28日)
  7. #0

    CharlotteWu

    c09***[email protected]

    1

    参考:

    # 输出指定区间内的所有阿姆斯特朗数
    try:
     lower = int(input("最小值:"))
     upper = int(input("最大值:"))
    except ValueError:
     print("所输入内容非整数!")
     exit(1)
    for num in range(lower, upper+1):
     sum = 0
     n = len(str(num))
     
     for i in str(num):
     sum += int(i) ** n
     
     if sum == num:
     print(num)

    CharlotteWu

    c09***[email protected]

    7年前 (2019年11月09日)
  8. #0

    AI航标

    446***[email protected]

    6
    #一个推导式搞定一个3位数的算法
    y = [(x//100)**3+((x//10)%10)**3+(x%10)**3 for x in range(100,1000) if (x//100)**3+((x//10)%10)**3+(x%10)**3==x]
    print(y)
    #[153, 370, 371, 407]

    AI航标

    446***[email protected]

    7年前 (2019年12月11日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /