2015-03-03 128 views
0
a=input() 
b=input() 
if a<b : 
print('B is maximum',b) 
else: 
print('A is maximum',a) 

这个程序如果我们给a = 10 b = 2 它会给B是最大的原因吗?python如果条件不适合某些条件,为什么?

+4

'input()'返回字符串,而不是数字。 – Barmar 2015-03-03 04:35:48

+0

可能重复的[Python:原始\ _input读取数字问题](http://stackoverflow.com/questions/5762938/python-problem-with-raw-input-reading-a-number) – 2015-03-03 04:37:56

+0

您是否正在使用Python 2或3.你的缩进是错误的 – user7 2015-03-03 04:42:48

回答

4

这听起来像你使用Python 3.x.在这个版本中,input()返回字符串,而不是数字,因此它正在进行字典对比,而不是数字比较。如果你想比较整数,你必须首先转换输入:

a = int(input()) 
b = int(input()) 
+0

请注意,这只是在Python 3中。这个问题没有指定Python版本,所以在OP实际上使用Python 2的情况下,然后发生了一些更奇怪的事情。 – seaotternerd 2015-03-03 04:40:38

+0

在python 2.x我认为使用'输入'将返回数量按预期。我错了吗? – user7 2015-03-03 04:41:57

+0

这是正确的。 python 3.x'input'就像Python 2.x'raw_input'。 – Barmar 2015-03-03 04:43:48

0

确切地说,这是因为你正在使用Python 3.x.在Python 2.x中,有两个变体,raw_input()返回一个字符串,input()返回一个评估结果。在Python 3.x中,raw_input()被重命名为input(),并且原始input()函数被删除(尽管通过将它包装在eval函数中可以轻松获得)。

将字符串进行比较lexicographically so'10'<'2'虽然如果他们是数字,结果会是对立的。

+0

我不认为_antagonistic_意味着你认为它的意思。 – Barmar 2015-03-03 05:10:19