2016-04-13 13 views
-4

我正尝试显示用户输入数组中的最大数字。我不允许使用内置的排序功能。这是我制作的代码。运行时,它始终返回列表中的第一个整数,而不是最大的整数。程序将不会显示我的列表中的最大数字

integers = [] 

print("Please enter a list of integers.") 
print("To finish entering the integers, enter a 0 for the value.") 

def floatInput(): 
    done = False 
    while not done: 
     integerIn = input("Please enter an integer < 0 to finish >: ") 
     try: 
      integerIn = int(integerIn)    
     except: 
      print("I was expecting an integer number, please try again...") 
      integerIn = input("Please enter an integer < 0 to finish >: ") 
     if integerIn == int("0"): 
      done = True 
     else: 
      integers.append(integerIn) 
    return integers 

floatInput() 

def largestNumber(array): 
    maxNum = -1 
    for i in array: 
     if i > maxNum: 
      maxNum = i 
    return maxNum 

def displayArray(): 
    print("The Maximum value is: " + str(largestNumber(integers))) 

displayArray() 
+0

我的输入是... 4,5, 7,2,0 –

+0

在我的机器上工作得很好。按预期打印最大值:7。 – Kevin

+0

无法重现。 – Pythonista

回答

0

这个任务右代码:

def float_input(): 
    integers = list() 
    while True: 
     value = int(input('Enter value (or 0 to exit): ')) 
     if value != 0: 
      integers.append(value) 
     elif value == 0: 
      break 

    return integers 

print(max(float_input())) 

或者,如果你想创建自己的largestNumber功能使用:

def largest_number(lst): 
    max_elem = lst[0] 
    for j in lst[1:]: 
     if j > max_elem: 
      max_elem = j 
    return max_elem 

print(largest_number([1, 2, 5, 3, 4])) # print 5 
+0

你的版本修正了他的'largest_number'函数的问题是什么?我能看到的唯一区别是当列表包含负数时,您的工作正常。 – Barmar

+0

我提出了一个使用标准libabry函数max和更短float_input()的新版本func –

+2

这将如何帮助任何人了解他在原始中做了什么错误?这应该是一种教育资源,而不仅仅是一个工作代码库。 – Barmar

相关问题