python - Think Python(如何像计算机科学家一样思考)——练习 8.4 Duckling 问题
问题描述
我还有一个与以下链接相关的问题:
Think Python(如何像计算机科学家一样思考)- 练习 8.4
我尝试使用这种方法来解决小鸭问题,但它没有产生我想要的答案。我想知道我的代码有什么问题,因为我似乎无法弄清楚:(
如您所见,我认为我设置了正确的条件:当字母为 O 或 Q 时,您在前缀和后缀之间添加“u”,然后按原样打印其他所有内容。但问题是,输出将“u”添加到所有内容,而不仅仅是 O 或 Q。
是否有某种语法错误我做错了?我很难理解我做错了什么,如果有人能指出我的错误以及如何解决它,我将不胜感激。谢谢。
解决方案
if letter == 'O' or 'Q':
不做你认为它做的事情(请参阅此处了解运算符优先级),它相当于:
if (letter == 'O') or ('Q'):
并且,由于'Q'
是一个真值,该if
语句的条件始终为真。在您的情况下,您需要的是:
if letter == 'O' or letter == 'Q':
但更 Pythonic 的方式是:
if letter in ['O', 'Q']:
这也更符合您想要检测字母是否是某一组字母中的任何字母的原始想法,而不是明确地检查每个字母。
推荐阅读
- css - 如何使 Material UI TableCell 组件的子元素填充单元格的高度?
- amazon-web-services - `AWS::RDS::DBProxy AuthFormat` 的秘密必须包含什么
- rxjs - 加入或连接多个对象可观察对象并返回唯一对象
- node.js - 抛出新的 ERR_INVALID_CALLBACK(回调);
- sublimetext3 - sublime text 键绑定根据字符类型以不同的增量向前移动光标
- node.js - 创建用户 ERR_HTTP_HEADERS_SENT 后使用 next.js API 发送电子邮件
- python - Python读取Pastebin Raw
- python - Django以一种形式创建父模型和子模型
- r - 如何计算一列中有多少个字符串
- javascript - 如何修复 TypeError [INVALID_TYPE]:提供的参数不是用户也不是角色