这是一个很经典的编程练习题:
如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋数、自幂数)。
如 407 = 43 + 03 + 73 就是一个阿姆斯特朗数。
写一段代码,输出 1000 以内的所有阿姆斯特朗数。
附加题:输入一个正整数,输出距离它最近的阿姆斯特朗数。
期待各位同学提交解答。
提交代码可以使用 paste.ubuntu.com 或 codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。
往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。
【解答】美队盾牌
turtle 库相关介绍参见:【编程课堂】海龟作图
要注意的是,画图完成后需要调用 turtle.done(),否则程序就直接退出了。
给一份参考解答:
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 实现
欢迎加入
Crossin的编程教室
crossincode.com
读者交流QQ群:660296565
微信请加 crossin123 按提示入群
请把我们分享给身边爱学习的小伙伴 :)
点击左下角“阅读原文”,查看更多学习资源