python - Python 3 if/elif/else 运算符总是转到 else
问题描述
我正在使用 Python 3.5 编写一个不和谐的机器人,我遇到了一个问题,我似乎无法解决它,这是代码
if message.content.startswith('!juvialist'):
decision = message.content[10:]
if decision == 'add':
await client.send_message(message.channel, 'Added')
elif decision == 'remove':
await client.send_message(message.channel, 'Removed')
else:
await client.send_message(message.channel, decision + ' is an invalid parameter')
基本上,这里发生的情况是,如果用户键入 '!juvialist add' python 在添加之前将所有内容切片并放入一个称为决策的字符串中,然后一个 IF 语句决定会发生什么,如果它是添加或删除它会执行某些操作,否则它会告诉用户认为参数错误,但问题是,即使它是正确的,它总是去 else 并返回错误
错误:
我试过做同样的事情,但基于谷歌搜索的方式略有不同,查看关于 IF 语句的 Python 文档也没有多大帮助,这可能意味着我遗漏了一些非常明显的东西,所以我会很感激如果你能在这里帮助我,谢谢。
解决方案
因为你错过了space
。事实上,你decision
是" add"
或其他什么。
代替decision = message.content[11:]
。
或者更好的主意是decision = message.content[10:].strip()
推荐阅读
- regex - 如何使用正则表达式从一级 JSON 字符串中提取键值?
- wordpress - 在 Woocommerce 注册表单中添加年龄验证复选框
- mysql - 使用 GROUP BY 时从聚合列中选择首选值
- php - 如何让 ACF 转发器子字段值有条件地显示在表中?
- ios - 缩小时注释消失
- android - RecyclerView smothScrollToPosition 在 ViewPager 中不起作用
- api - Google Cloud Platform:使用 api 列出可用项目
- ssl - docker-machine + docker-compose + ssl(让我们通过 nginx 和 certbot 加密)
- javascript - 使用 Wordpress API 中的其他标记在 Google 地图中添加我的位置标记
- amazon-web-services - 如何使用 aws public ip 访问 docker 容器