例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)
测试结果:
本人愚笨,一直想不明白,如何对程序进行优化,总感觉这个代码不像python,或者说跟我想像中的不一样。
————————————————
例49:试编程找出能被各位数字之和整除的一切两位数。
求解分析:
把十位和个位的数字取出来
符合条件的整数放到列表中,打印列表
代码如下:
测试结果:
一直不怎么用while,现在强迫自己用while来求解,再用for去验证。while和for,可能也是一个用习惯了的问题。不过作为一名教师,得补齐短板,两者都得会,因为要教给学生。
————————————————
例50:编程找出四个互不相等的自然数, 它们之中任意两数之和为偶数, 任意三数之和可以被3整除, 而且这四个数的和越小越好(已知它们的和不大于50).
求解分析:
四个自然数中任意两数之和为偶数,要么四个数全部是奇数,要么四个数全部是偶数。
互不相等的处理,是在取值范围上做了文章。
代码如下:
方法一:
感觉代码太长了,想起好久没用函数了。
方法二:
测试结果:
————————————————
100例,一开始觉得不难,真的坚持做下来,感觉有点吃不消了。有些题,真的是怎么想也想不明白,有些题,总感觉有更加简单的方法求解,也想不到,苦恼。
开学第一周马上要结束了,下周开始要在机房给学生上课了,解题更新要缓一缓了。首要任务是把学生教好了,希望学生有兴趣学习python,python也能帮助到学生。
另外,mu编辑器(https://codewith.mu/en/download)真的不错,有兴趣的老师,可以去下载试试,我想学生也会喜欢的。
————————————————