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

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

如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋数、自幂数)。 如 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/

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

原文发布于微信公众号 - Crossin的编程教室(crossincode)

原文发表时间:2017-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏华章科技

入门科普:什么时候要用Python?用哪个版本?什么时候不能用?

Python使用面向对象编程(object-oriented programming,OOP)和构造,你可以像任何其它面向对象的语言一样使用它,譬如Java。

1222
来自专栏ACM小冰成长之路

51Nod-1837-砝码称重

ACM模版 描述 ? 题解 根据题目中的样例解释,我们完全可以大胆的猜测,次数至多不超过两次,所以一共可能是 0、1、20、1、2 次,00 次很容易想就是 n...

2229
来自专栏机器之心

这些Python代码技巧,你肯定还不知道

人们还经常把 Python 笑称为「可执行伪码(executable pseudocode)」。但是,当你可以编写这样的代码时,很难去反驳这种言论:

1153
来自专栏牛客网

热乎乎的阿里面经,攒人品

一面: 1.自我介绍一下,然后问你最擅长哪一方面(我说虚拟机、集合) 2.他说HashMap我现在都不敢问了,出过很多笑话,很多人都是背的,自己没办法判断是看...

3485
来自专栏有趣的Python和你

千里之行,始于足下变量字符串

983
来自专栏WindCoder

网易MySQL微专业学习笔记(六)-内置函数

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL数据库对象与应用”中的MySQL数据类型相关笔记。

651
来自专栏GreenLeaves

C# 多线程五之Task(任务)

为什么MS要推出Task,而不推Thread和ThreadPool,以下是我的见解:

1431
来自专栏Kirito的技术分享

JAVA 拾遗--JPA 二三事

记得前几个月,spring4all 社区刚搞过一次技术话题讨论:如何对 JPA 或者 MyBatis 进行技术选型?传送门:http://www.spring4...

40410
来自专栏GreenLeaves

Apater适配器模式(结构型模式)

what is Apater?适配,这个概念在生活中无处不在,比如你的iphone 4手机充电器坏了,这是时候只有一个iphone 8的充电器,两个充电器的头并...

682
来自专栏深度学习自然语言处理

【收藏】这些Python代码技巧,你肯定还不知道

人们还经常把 Python 笑称为「可执行伪码(executable pseudocode)」。但是,当你可以编写这样的代码时,很难去反驳这种言论:

713

扫码关注云+社区