我知道python2.7允许不同类型之间的比较。因此,str 和 int 之间的相等比较将导致False
。 根据 a 和 b 的值,比较是否为真?
a = input('we input some string value a')
if (a==int('some string b')):
print("yes")
else:
print("no, never!!")
上面的代码片段可以输出"是"吗?如果是,什么时候?
简短回答:是的,这可以产生yes
作为答案(假设'some string b'
是实际上可能包含合法int
表示的字符串的占位符;如果它是确切的文字字符串,则当您调用int
时,您只会得到一个ValueError
)。
长答案:
-
int
和str
永远无法相提并论。int
和str
是不相关的不同类型,虽然存在少量的类型灵活性(不同的数字类型与大多数语言中的方式相当),即使在 Python 2 上(其中<
/>
/<=
/>=
不会引发异常并使用荒谬的回退比较来提供不相关类型的任意排序),它是一种强类型语言,int
和str
不互操作诸如此类。 -
也就是说,Python 2 上的
input
很糟糕;它eval
从用户那里收到的文本,所以如果用户输入12345
,它实际上会返回一个int
。因此,如果用户输入一个合法的int
文字,并且'some string b'
本身就是int
的法律表示,那么你已经提供了一个真实的int
来比较两边,并且这段代码可以返回yes
,不是因为str
和int
相互比较相等,而是因为当输入看起来像int
时input
将返回int
s(和float
s表示float
看起来的东西)。
旁注:在病理情况下,有人可能会在前一行上命名input
和/或int
内置,任何事情都可能发生。我不打算在那里详细介绍;它是一种编程语言,你可以用它做愚蠢的事情,但是告诉它做愚蠢的事情并想知道它是否会愚蠢并没有什么有趣的。