从用户获得数字&打印最大值和最小值(不使用内置函数)

时间:2010-10-14 22:21:24

标签: python list max minimum

我正在审查执行以下操作的python练习:

  • 读取数字列表,直到“完成”获取 进入。

  • 输入“完成”时,打印 最大和最小的 编号

  • 它应该是而不是直接 使用内置函数max() 和min()。

这是我的来源。 Traceback说,“'浮动'对象不可迭代”

我认为我的错误来自于没有正确使用列表来计算最小和最大值。 任何提示和帮助将不胜感激!

while True:
    inp = raw_input('Enter a number: ')
    if inp == 'done' : 
        break

    try:
        num = float(inp)
    except:
        print 'Invalid input'
        continue                            

numbers = list(num)
minimum = None       
maximum = None

for num in numbers :                          
    if minimum == None or num < minimum :
        minimum = num

for num in numbers :        
    if maximum == None or maximum < num :
        maximum = num

print 'Maximum:', maximum
print 'Minimum:', minimum

谢谢!

4 个答案:

答案 0 :(得分:4)

您不需要列表。您应该只需跟踪当前的最小值和最大值。

minimum = None
maximum = None

while True:
    inp = raw_input('Enter a number: ')
    if inp == 'done': 
        break

    try:
        num = float(inp)
    except:
        print 'Invalid input'
        continue                            

    if minimum is None or num < minimum:
        minimum = num

    if maximum is None or num > maximum:
        maximum = num

print 'Maximum:', maximum
print 'Minimum:', minimum

答案 1 :(得分:3)

使用num = float(inp),您只需分配一个号码,并在每次分配新号码时覆盖它。您必须先创建列表,然后每次都为其添加数字。像这样:

nums = []
while True:
  ...
  nums.append(float(inp))

答案 2 :(得分:0)

input_set = []
input_num = 0

while (input_num >= 0):

    input_num = int(input("Please enter a number or -1 to finish"))
    if (input_num < 0):
        break
    input_set.append(input_num)

print(input_set)

largest = input_set[0]
for i in range(len(input_set)):

    if input_set[i] > largest:
        greatest = input_set[i]

print("Largest number is", greatest)



smallest = input_set[0]
for i in range(len(input_set)):

    if input_set[i] < largest:
        smallest = input_set[i]

print("Smallest number is", smallest)

答案 3 :(得分:0)

尝试此代码:

 def max(data):
    l = data[0]
    s = data[0]
    for num in data:
        if num > l:
            l = num
        elif num < s:
            s = num
    return l, s
    print(max([0, 10, 15, 40, -5, 42, 17, 28, 75]))