2017-05-04 115 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))