100例经典炒菜_经典编程100例——python版(例48~例50)

例48:截数问题: 任意一个自然数,我们可以将其平均截取成三个自然数。例如自然数135768,可以截取成13,57,68三个自然数。如果某自然数不能平均截取(位数不能被3整除),可将该自然数高位补零后截取。现编程从键盘上输入一个自然数N(N的位数<12),计算截取后第一个数加第三个数减第二个数的结果。

求解分析:

1.len(srt(n))位数与3,6,9,12去比较,如果不足则分别补足3,6,9,12,这里用到了str.zfill()方法。

字符串zfill() 方法返回指定长度的字符串,原字符串右对齐,前面填充0。

2.int转换成str,再分割,分割后,str转换成int做加减法求和。

代码如下:(有点多了,感觉不像python)

cfdd76dcd322f030d035924f2e2d8c30.png

测试结果:

ddf856c73430a9fbeeb05aaf96bea332.png

96ffa409585279bb1004746dd9ced7b1.png

4cf6eebfeb397bc318d0ac726874e9aa.png

3183fa6c76305a537b638afeac31fc17.png

本人愚笨,一直想不明白,如何对程序进行优化,总感觉这个代码不像python,或者说跟我想像中的不一样。

————————————————

例49:试编程找出能被各位数字之和整除的一切两位数。

求解分析:

把十位和个位的数字取出来

符合条件的整数放到列表中,打印列表

代码如下:

05596c184fd282126b9995b93dd5deea.png

测试结果:

eb24f92a9ce78e43d48070491024c690.png

    一直不怎么用while,现在强迫自己用while来求解,再用for去验证。while和for,可能也是一个用习惯了的问题。不过作为一名教师,得补齐短板,两者都得会,因为要教给学生。

————————————————

例50:编程找出四个互不相等的自然数, 它们之中任意两数之和为偶数,  任意三数之和可以被3整除, 而且这四个数的和越小越好(已知它们的和不大于50).

求解分析:

四个自然数中任意两数之和为偶数,要么四个数全部是奇数,要么四个数全部是偶数。

互不相等的处理,是在取值范围上做了文章。

代码如下:

方法一:

70715780c63f29cb72ae70469784991c.png

感觉代码太长了,想起好久没用函数了。

方法二:

79f086ed8c069929e805aa613e4a8305.png

测试结果:

6ab80eb387e0d0132dd87e33c682a0db.png

————————————————

    100例,一开始觉得不难,真的坚持做下来,感觉有点吃不消了。有些题,真的是怎么想也想不明白,有些题,总感觉有更加简单的方法求解,也想不到,苦恼。

    开学第一周马上要结束了,下周开始要在机房给学生上课了,解题更新要缓一缓了。首要任务是把学生教好了,希望学生有兴趣学习python,python也能帮助到学生。

另外,mu编辑器(https://codewith.mu/en/download)真的不错,有兴趣的老师,可以去下载试试,我想学生也会喜欢的。

————————————————

357d15f9523a64d26de8c512c8970264.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值