2015-03-03 99 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