新教材习题解析之python循环结构(2)

Python算法之旅

共 1954字,需浏览 4分钟

 ·

2021-06-27 02:49

说在前面

下学期开始,绝大多数学校就要开始上新教材内容了,必修一《数据与计算》的主要内容是Python语言学习。新教材的理念是编程教学不应该只教语法,更重要的是教学生如何解决问题,如何使用计算机编程解决实际问题。所以命题的思路不应该是抠语法,应尽量避免考查语法细节,要把重点放在数学建模和解决问题上面。

受《新时代领航技术同步用书》编委会的邀请,我也尝试着编制了一些题目,尽可能按照新课标的要求,力求能够激发学生思考和考查学生的计算思维。

上次已经和大家分享了2道关于Python循环结构的开放性题目,由于循环结构是编程教学的一个难点,必须多加练习才能掌握,所以今天继续和大家分享2道相同类型的题目。

由于新教材是块新大陆,我们都是在摸索前行,加之本人水平有限,在描述题目用语和控制题目难度方面都存在不足,敬请大家批评指正。



例6.(开放题)李白买酒。李白街上走,提壶去买酒。遇店加一倍,见花喝一斗。店不相邻开,花不成双长。三遇店和花,喝光壶中酒。请问此壶中,原有多少酒?

(1)“店不相邻开,花不成双长”是什么意思?

(2)李白喝酒和买酒有什么规律?这个规律重复了几次?

(3)要计算酒壶中原有多少酒,可以从后向前倒推,利用重复的规律推导出原有酒的数量,你打算使用哪种算法结构来编程实现上述功能?请写出具体的代码,并添加必要的注释。



解析:(1)“店不相邻开,花不成双长”的意思是不会连续的经过酒店和花,即不会连续的添酒和喝酒。

(2)李白喝酒的规律是“遇店加一倍,见花喝一斗”,这个规律重复了3次。

(3)要计算酒壶中原有多少酒,可以从后向前倒推,最后喝完为0,往前遇到鲜花加1斗,再往前遇到酒店减为一半。如此操作三次之后,得到的数字即为初始状态时酒的数量。可以使用循环结构来实现算法功能,参考代码如下:

a = 0 #存储酒的数量,喝完时为0

#从后向前倒推原有酒的数量

for i in range(3):

    a += 1 #见花喝一斗

    a /= 2 #遇店加一倍

print(a) #输出原有酒的数量


拓展思考:

8.(开放题)厦门鼓浪屿有一副很有趣的对联:雾锁山头山锁雾;天连水尾水连天。它叫回文联,既可顺读,也可倒读,颇具趣味,是我国的重要传统文化之一。我们可以从键盘输入一个字符串s,然后编写程序判断其是否为回文字符串。

判断字符串s是否为回文字符串,最简单的方法是比较一下顺序和逆序字符串是否相等,即判断ss[::-1]是否相等。除此之外,我们也可以利用循环语句,遍历字符串逐个比较左右两端的字符是否相等。下面的程序实现了前述功能,请将缺失的代码补充完整,并思考是否有其他方法来判断回文字符串。

s = input('请输入一个字符串:')

L, R = 0, len(s) - 1

while ①             :

     if s[L] != s[R]:

         print(s, '不是回文字符串')

         ②            

     L, R = ③               

else:

    print(s, '是回文字符串')

需要本文word版和拓展思考答案的,可以加入“Python算法之旅”知识星球参与讨论和下载文件,Python算法之旅”知识星球汇集了数量众多的同好,更多有趣的话题在这里讨论,更多有用的资料在这里分享。

我们专注Python算法,感兴趣就一起来!

相关优秀文章:

阅读代码和写更好的代码

最有效的学习方式

函数与模块典型例题

字符串专题之中文大写金额数字转换工具

新教材习题解析之python循环结构

浏览 130
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报