新教材习题解析之python循环结构(2)
说在前面
下学期开始,绝大多数学校就要开始上新教材内容了,必修一《数据与计算》的主要内容是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 = input('请输入一个字符串:')
L, R = 0, len(s) - 1
while ① :
if s[L] != s[R]:
print(s, '不是回文字符串')
②
L, R = ③
else:
print(s, '是回文字符串')
需要本文word版和拓展思考答案的,可以加入“Python算法之旅”知识星球参与讨论和下载文件,“Python算法之旅”知识星球汇集了数量众多的同好,更多有趣的话题在这里讨论,更多有用的资料在这里分享。
我们专注Python算法,感兴趣就一起来!
相关优秀文章: