首页 > 解决方案 > Think Python(如何像计算机科学家一样思考)——练习 8.4 Duckling 问题

问题描述

我还有一个与以下链接相关的问题:

Think Python(如何像计算机科学家一样思考)- 练习 8.4

我尝试使用这种方法来解决小鸭问题,但它没有产生我想要的答案。我想知道我的代码有什么问题,因为我似乎无法弄清楚:(

在此处输入图像描述

如您所见,我认为我设置了正确的条件:当字母为 O 或 Q 时,您在前缀和后缀之间添加“u”,然后按原样打印其他所有内容。但问题是,输出将“u”添加到所有内容,而不仅仅是 O 或 Q。

是否有某种语法错误我做错了?我很难理解我做错了什么,如果有人能指出我的错误以及如何解决它,我将不胜感激。谢谢。

标签: python

解决方案


if letter == 'O' or 'Q':

不做认为它做的事情(请参阅此处了解运算符优先级),它相当于:

if (letter == 'O') or ('Q'):

并且,由于'Q'是一个真值,该if语句的条件始终为真。在您的情况下,您需要的是:

if letter == 'O' or letter == 'Q':

但更 Pythonic 的方式是:

if letter in ['O', 'Q']:

这也更符合您想要检测字母是否是某一组字母中的任何字母的原始想法,而不是明确地检查每个字母。


推荐阅读