【发布时间】:2014-06-04 16:47:26
【问题描述】:
我在 Python 3.3.4 中有以下相当简单的 if 语句,它可以按原样工作,但可以简化:
if ans is '1':
ans = int(ans)
ans = (opt[ans])
elif ans is '2':
ans = int(ans)
ans = (opt[ans])
elif ans is '3':
ans = int(ans)
ans = (opt[ans])
我尝试了各种组合:
if ans is '1' or '2' or '3':
ans = int(ans)
ans = (opt[ans])
或者这个,
if ans == '1' or '2' or '3':
ans = int(ans)
ans = (opt[ans])
或者这个,
if ans is ('1') or ('2') or ('3'):
ans = int(ans)
ans = (opt[ans])
我什至尝试过使用字典,但大多数组合只允许通过任何字符串作为“ans”;我是不是很傻,错过了一些非常简单的东西,或者这不可能?提前致谢。
【问题讨论】:
-
请,
is与==不同。在这种情况下,您应该使用==。你几乎不需要使用is,请忘记它的存在。如果您继续使用is代替==,您将获得无法解释和意想不到的结果。 -
感谢您的警告,我对 Python 还很陌生。 'in' 或 '!=' 呢?这是类似的情况吗?
-
没有。没有任何情况可以将
is或==替换为in,因此不会将其与is或==混淆。!=与==正好相反。 -
不,这就是我的意思,在大多数情况下我应该使用其中一个还是“in”或“!=”?我不是要替换 '==' 或 'is',我知道它们是相反的。
-
我很困惑。
in和!=表示完全不同的东西。in的意思是“这个列表/字典/元组/容器中有一些东西”?!=表示“不等于”。==表示“相等”。is表示“对象 ID 相等”。我想说的是,在 0 种情况下,将in切换为!=甚至在语法上是有效的,反之亦然,更不用说在逻辑上有效了。我不明白你的问题的起源。
标签: python string if-statement integer