前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每周一坑】阿姆斯特朗数

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

作者头像
Crossin先生
发布2018-04-17 11:02:16
5680
发布2018-04-17 11:02:16
举报

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

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

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

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

期待各位同学提交解答。

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

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

【解答】美队盾牌

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

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

给一份参考解答:

代码语言:javascript
复制
# 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/

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 这是一个很经典的编程练习题:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档