【每周一坑】美队盾牌
大家好,最近更新频率又慢了,【每周一坑】快变成【每两周一坑】了……不过别急,我们正在酝酿一些好玩又实用的内容和活动,很快会陆续奉上。
刚刚加入不久朋友,如果是初学编程,跟着我们公众号菜单里的入门教程学习即可。更多学习建议可以参考之前发的两篇文章:
顺便说下,因为现在我们的公共交流群人数比较多,没法保证所有的问题都能看到且回答,提个问题能不能正好有人帮你解决还得看运气。因此正在开发群助教AI机器人的问答功能,之后可以缓解这个问题。
不过,还是建议先学会用搜索和查文档,自己掌握解决问题的能力才是坠好的。如果代码中实在有问题搞不定,请通过以下方式提问:
发布到我们的论坛 bbs.crossincode.com 上,说清问题,附上你的代码、输出、开发环境、报错等必要信息和截屏。不是实时响应,但看到后都会回复,最长不超过一天。
发微博 @Crossin,同样附上上述说的必要信息和截屏,收到后我会给你回复。
尽量一次性准确描述你的问题及提供完整的信息,有助于你的问题更好得到解决。(无须先问“你好”“在吗”“能不能请教你一个问题”)
其他途径由于信息流过多或展现形式的限制,不太方便做代码相关的问答。
当然,如果你想获得长期的、及时的、有效的、有问必答的答疑支持,请加入码上行动。
之前老是让大家做数学题,这次我们轻松一点,来个有趣的:
用 Python 画美国队长的盾牌
用自带的 turtle 模块即可实现,算是入门级的难度。用法可参考:【编程课堂】海龟作图
如果你觉得不过瘾,可以挑战更高难度:
或者大师级的:
期待各位同学提交解答。
提交代码可以使用 paste.ubuntu.com 或 codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。
往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。
【解答】罗马数字转换
技术上来说没有很高的难度,但写在代码里还是要小心点处理。
罗马转阿拉伯的时候,建议从右向左判断,这样会简单一些。
阿拉伯转罗马,要用到整除。在 py2 里,两整数相除得到的结果就是整除结果,而 py3 则必须使用 //
运算符。
示例代码:
# 罗马数字转整数def romanToInt(s): d = {'M':1000, 'D':500, 'C':100, 'L':50, 'X':10, 'V':5, 'I':1} res, p = 0, 'I' # 逆序逐一遍历 # 使用逆序的好处在于,每次只需对一位罗马数字进行加或减的操作 # 使用顺序的话,可能为两位 for c in s[::-1]: if d[c] < d[p]: res = res - d[c] else: res = res + d[c] p = c return res# 整数转罗马数字def intToRoman(self, num): values = [ 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 ] numerals = [ "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" ] # 迭代依次处理每位数字 res, i = "", 0 while num: res += (num//values[i]) * numerals[i] num %= values[i] i += 1 return res
给出两份同学的答案:
@郑文杰 Willie 代码最简洁:
http://paste.ubuntu.com/25047059/
@wuxiaojiao 简单并易于理解:
http://paste.ubuntu.com/25046101/