2014-06-07 79 views
4
a = [] 
for i in range(3): 
    a.append(input()) 
j = 0 
for i in a: 
    if i % 10 != 7: 
     j = min(a) 
print j 

我需要指找到在列表中的最小正數,其十進制表示不與數字7結束這是保證該列表具有至少一個正元件,算法十進制表示不會以數字7結束。我試過了,但條件不起作用。例如:它說7 [9,8,7]中最小。尋找具有條件蟒最小值

+0

你已經學過浮點數了嗎?應該考慮這些嗎?還要注意'min'給你最小的數字,而不是最小的_positive_一個。 – georg

回答

4

您是總是測試的最小數目a,雖然多次有未經過濾的號碼a。不要將首先以7結尾的數字添加到a;你可能想在積極數字過濾過:或者

a = [] 
for i in range(3): 
    value = input() 
    if i % 10 != 7 and i >= 0: 
     a.append(value) 

print min(a) 

,在發電機表達式過濾掉值:

a = [] 
for i in range(3): 
    a.append(input()) 

print min(i for i in a if i % 10 != 7 and i >= 0) 
+0

也許表明他的代碼可以如何修正 - min(I,j) - 而不是 - min(a) - 但是,您的解決方案更好。 –

0

編輯: 好,我看錯你的代碼,你用剩下哪些我認爲更好。雖然它可以使用像這樣普通的部門工作。

if ((i/10) - int(i/10)) * 10 != 7: 

還有,如果你不使用Python 3,你可能需要使用本作上述工作:

from __future__ import division 

或鑄造用浮動()來浮動,但使它太凌亂了。

+0

從他發佈的代碼片段中,我認爲可以安全地假設他沒有使用python 3.x ;-) –