在Python中锻炼"if ... else"的好编程题有哪些?

11 投票
11 回答
15529 浏览
提问于 2025-04-16 02:14

有哪些好的编程练习可以帮助Python初学者学习“if ... else”这个结构呢?我想到了以下几个,你知道还有其他的吗?

  1. 找出三个数字中最大的和最小的。
  2. 给定一个日期(年、月、日),找出下一个日期。

大多数目标听众之前接触编程的机会不多,我希望能让他们习惯正确地思考“if ... else”(以及后面所有的内容)。

11 个回答

1

在我看来,if语句在Python中是个挺有意思的话题。引入它的时候,我建议考虑一下这门语言的哲学。

大多数情况下,我不会把if当作C++中的switch来用。我更喜欢用一个函数字典。

我也尽量遵循“请求原谅比请求许可更简单”这个原则,更喜欢捕获异常。

我觉得你的例子应该考虑到这些。所以我不会用怪物游戏除以零的例子。虽然实现起来可能有趣,但在我看来,这并不是很符合Python的风格。

我主要把if当作一个过滤器来用。

如果你的目标是教这门语言的语法,我觉得不应该用任何复杂的算法作为例子。学习编程本身就是一个足够大的挑战。

所以我认为下面这种简单的例子就可以了。

class Song:
    def __init__(self, title, year):
         self.title = title
         self.year = year

songs = [Song('Blackbird', 1968), Song('Penny Lane', 1967), Song('Jenny Wren', 2005)]
for song in songs:
    if song.year < 1970:
        print song.title, 'by the Beatles'
    else:
        print song.title, 'is not a Beatles song'

如果你打算展示列表推导式,这也可以是一个第一步。

songs = [Song('Blackbird', 1968), Song('Penny Lane', 1967), Song('Jenny Wren', 2005)]
print [song.title for song in songs if song.year<1970]
9

“判断某一年是否是闰年”这个想法几乎立刻就会浮现在脑海中。只要给他们一些规则,然后让他们自己去实践。

还有其他一些可能的选择(虽然不全是用if语句):

  • 猎杀Wumpus(这个可能需要你去谷歌一下,我这是在暴露年龄)。
  • 经典的“在井字棋(圈圈叉叉)游戏中判断谁赢了”(如果不想用循环,你可以用八个if语句来做到这一点)。
  • 尽快猜出一个1到100之间的数字(提示:高了,低了)。

如果只用if/else语句,判断闰年是个不错的选择。你还可以考虑:

  • 测试一个数字是否是3、5或7的倍数。
  • 根据年龄判断某人是婴儿、幼儿、儿童、青少年、成年人还是老年人。
  • 根据最终的百分制成绩计算等级A-F。
  • 给定一个轮盘上的数字,判断它是红色/黑色、高/低和奇数/偶数。
  • 给定一手黑杰克,检查是否合规或爆掉(这很好,因为J/Q/K都算作10)。你还可以判断是否要再抽一张牌(比如总分低于17时)。

这些只是你可以尝试的一小部分可能性。

9

对于我们这些编程多年的人来说,想象从零开始的感觉真的很难。我建议避免使用超过5行代码的内容。

你需要决定先讲哪些内容,比如用户输入、输出、条件判断(if)、否则(else)、循环(while、for)、文件输入输出等。

在讲解条件判断(IF)时,他们是否已经知道如何获取用户输入?如何打印输出?如何写一个FOR循环?如何对整数进行算术运算?如何判断一个数字是否能被另一个数字整除?

这些问题的答案会限制你在讲解条件判断时的例子。

我建议先讲输出、算术运算、FOR循环、整除(取模)、用户输入,然后再讲条件判断(IF)。

这样我就可以提出一些问题,比如

Print the first 100 odd numbers
Determine the factors of a number entered  by the user
Play a number guessing game (User enters a guess, you print YES or Higher or Lower)

撰写回答