【每周一坑】阿姆斯特朗数

简介: 提交代码可以使用 paste.ubuntu.com 或 codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。

这是一个很经典的编程练习题:


如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋数、自幂数)。


407 = 43 + 03 + 73 就是一个阿姆斯特朗数。


写一段代码,输出 1000 以内的所有阿姆斯特朗数。


附加题:输入一个正整数,输出距离它最近的阿姆斯特朗数。


期待各位同学提交解答。


提交代码可以使用 paste.ubuntu.com 或 codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。


往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。


【解答】美队盾牌


turtle 库相关介绍参见:【编程课堂】海龟作图


要注意的是,画图完成后需要调用 turtle.done(),否则程序就直接退出了。


给一份参考解答:


# coding=utf-8
import turtle
import time
import math
def shield():
    # 设置背景
    turtle.bgcolor('#010101')
    # 设置速度
    turtle.speed(10)
    # 依次填充同心圆
    fill_circle('#FF0000', 230)
    fill_circle('#FFFFFF', 178)
    fill_circle('#FF0000', 129)
    fill_circle('#0000FF', 75)
    # 完成五角星
    draw_five('#FFFFFF', 75)
    turtle.done()
# 画圆线
def draw_circle(radium):
    turtle.home()
    turtle.penup()
    turtle.setheading(0)
    turtle.forward(radium)
    turtle.pendown()
    turtle.setheading(90)
    turtle.circle(radium)
    turtle.penup()
    turtle.home()
# 填充圆环
def fill_circle(color, r1):
    turtle.color(color, color)
    turtle.fillcolor()
    turtle.begin_fill()
    draw_circle(r1)
    turtle.end_fill()
# 画并填充五角星
def draw_five(color, radium):
    turtle.home()
    turtle.penup()
    turtle.setheading(90)
    turtle.forward(radium)
    turtle.setheading(288)
    turtle.pendown()
    long_side = (math.sin(math.radians(36))*radium)/math.sin(math.radians(126))
    turtle.color(color, color)
    turtle.fillcolor()
    turtle.begin_fill()
    for i in range(10):
        turtle.forward(long_side)
        if i % 2 == 0:
            turtle.left(72)
        else:
            turtle.right(144)
    turtle.end_fill()
    turtle.penup()
if __name__ == '__main__':
    shield()


推荐 @strawhat 同学的答案,思路清晰,程序中各部分功能独立,非常好理解:


http://pastebin.ubuntu.com/25147394/


同时也给出其他两位同学的答案:


@疯琴:


https://github.com/YngwieWang/python_practice/blob/master/AmericanCaptain.py


@xuxiaojiao:


http://pastebin.ubuntu.com/25160891/


『码上行动』在线学习班正在开放中,详情请回复 码上行动 查看

近期文章推荐阅读:

编程新手:看懂很多示例,却依然写不好一个程序

喏,你们要的 PyCharm 快速上手指南

几个以前发过、回复过很多次、比较有用的学习资源

给伸手党的福利:Python 新手引导

如何用100行Python代码做出魔性声控游戏“八分音符酱”

数据分析:当赵雷唱民谣时他唱些什么?

一行代码扫出“敬业福”

我扒了杜蕾斯的微博

Python 爬虫爬取美剧网站

今天,你抢到票了吗?

爆款游戏《贪吃蛇大作战》的 Python 实现

相关文章
|
Ubuntu Linux
憨态可掬的牛——Linux上的Cowsay命令体验
Cowsay是一个有趣的命令行工具,在Linux系统中备受欢迎。它能让一个笑脸的小牛说出你输入的文本,为你的终端带来一些趣味和幽默。本文将介绍如何在Linux上安装、运行和使用Cowsay,以及一些有趣的用法和定制技巧。
964 0
|
2月前
|
存储 JavaScript Java
2025版基于springboot的企业考勤管理系统
本系统基于Spring Boot、Vue与MySQL,实现企业考勤自动化管理,集成生物识别与GPS定位,支持多端操作与数据可视化,提升考勤准确性与管理效率,助力企业数字化转型。(239字)
|
10月前
|
人工智能 运维 Cloud Native
云原生 Meetup,AI 应用工程化专场·广州站
欢迎莅临广州市海珠区鼎新路 88 号广州阿里中心,O-N-10-02 春秋书院。报名成功后,您将在活动前一周收到短信通知。
168 93
|
12月前
|
传感器 安全 物联网
量子加密技术的应用领域有哪些?
量子加密技术的应用领域有哪些?
985 59
|
Java Spring
ij社区版如何创建spring项目
如何在IntelliJ IDEA社区版中创建Spring项目,包括安装Spring Boot Helper插件的步骤和创建过程。
364 1
ij社区版如何创建spring项目
|
11月前
|
数据采集 安全 文件存储
NAS极速远程访问!贝锐花生壳推出飞牛fnOS专属内网穿透服务
贝锐花生壳与飞牛私有云fnOS合作,推出专属客户端及映射服务,实现3倍传输速率提升。用户只需在fnOS应用中心搜索“花生壳”,一键安装即可享受高速、稳定、安全的远程NAS访问体验。
1291 9
|
监控 网络协议 Unix
深入探索Linux的lsof命令
在Linux系统中,了解哪些文件被哪些进程打开对于系统管理和问题诊断是极其重要的。这正是`lsof`命令,即List Open Files,发挥其强大功能的场景。本文旨在详细介绍`lsof`的起源、底层原理、参数意义,常见用法,并详解其返回结果的每个字段含义。此外,我们将讨论在使用`lsof`命令时需要注意的事项。
|
存储 数据可视化 数据挖掘
使用Python的Statsmodels库进行时间序列分析
【4月更文挑战第20天】Statsmodels是Python的数据分析库,支持时间序列分析。基本流程包括安装库、导入模块、准备时间序列数据、检查数据、确定ARIMA模型参数、拟合模型、查看结果、预测未来值及评估模型性能。通过ARIMA类进行建模,并使用summary()和forecast()进行分析和预测。
302 8
|
存储 分布式计算 负载均衡
ChunkServer 的数据复制与分发策略
【8月更文第30天】在分布式文件系统中,如Google的GFS(Google File System)或Hadoop的HDFS(Hadoop Distributed File System),数据块(chunk)的管理和分发是确保数据可靠性和系统性能的关键因素。ChunkServer 负责存储数据块,并通过复制和分发策略来提高数据的可用性和持久性。本文将探讨 ChunkServer 如何实现数据块的高效复制和分发,并通过具体的代码示例来展示这些策略的实际应用。
263 0
|
Linux 开发工具
蓝易云 - 在CentOS7/RHEL7上安装OpenSSL1.1.x教程
以上就是在CentOS7/RHEL7上安装OpenSSL 1.1.x的步骤。希望对你有所帮助。
795 0