2017-05-04 35 views
-2

我正在研究此代碼以查找用戶輸入的最大數字。實際上,如果我輸入所有負數,程序將返回0作爲最大值。使用負數查找最大值

我需要添加什麼來處理負數?例如,如果用戶輸入-3-1,程序應打印-1

m = 0 
finished = False 
while not finished: 
    print('Enter a number (0 to finish): ', end = '') 
    s = input() 
    num = int(s) 
    if num != 0: 
     if num > m: 
      m = num 
    else: 
     finished = True 
print(str(m)) 
+0

好了,你覺得需要做的事情,以確保你只在看負數?向我們展示你所嘗試過的 - 我們不是代碼編寫服務。 –

+0

也許開始你的指標在儘可能低的價值而不是零。 – csmckelvey

回答

3

我看到三個普通可能性:

  1. 到可笑的小整數啓動;我認爲你現在的代碼將從那裏起作用。
  2. 在之前讀取第一個輸入數字的循環;使該起始值爲m
  3. 根本不要使用m的值:將所有輸入數字附加到列表中,並且在用戶輸入以停止後,只需執行列表。

另外,學會使用描述性變量名稱。 完成是好的,但在語義上沒用,NUM是有問題(儘管它相當非描述)。

3

考慮使用內置max()功能如下方法:

positives = [] # list for positive numbers 
negatives = [] # list for negative numbers 
finished = False 

while not finished: 
    print('Enter a number (0 to finish): ', end = '') 
    num = int(input()) 
    if num > 0: 
     positives.append(num) 
    elif num < 0: 
     negatives.append(num) 
    else: 
     finished = True 

print('Max positive number: ', max(positives)) 
print('Max negative number: ', max(negatives))