意外的最大数量但正确的最小数量

时间:2017-05-13 18:29:34

标签: python

我想要发生什么:打印出来('542',' - 214')

目前正在发生什么:打印出来('6',' - 214')

我不确定为什么最小数字是正确的,但是6被用作最大值。

我的Python代码:

def high_and_low(numbers):

    numbers = numbers.split(" ")
    maxNumbers = max(numbers)
    minNumbers = min(numbers)

    numbers = maxNumbers, minNumbers

    return numbers

print(high_and_low("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"))  

我尝试将其更改为:

maxNumbers = int(max(numbers))
minNumbers = int(min(numbers))

但是6还是回来了。

3 个答案:

答案 0 :(得分:3)

这对我有用:

def high_and_low(numbers):

    numbers = [int(n) for n in numbers.split(" ")]
    maxNumbers = max(numbers)
    minNumbers = min(numbers)

    numbers = maxNumbers, minNumbers

    return numbers

print(high_and_low("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"))  

结果:

(542, -214)

当您尝试将max()min()转换为int时,为时已晚,因为已经根据列表中各种字符串的排名对值进行了评估。在评估排名之前将值转换为int是获得您正在寻找的结果的正确方法。

答案 1 :(得分:1)

嗯,你正在排序字符串而不是整数。 您尝试使用`int(max(数字))只会将“最大字符串”更改为int。

在检查最大值和最小值之前,您需要将值更改为int。这将有效:

def high_and_low(numbers):

    numbers = [int(x) for x in numbers.split(" ")]
    maxNumbers = max(numbers)
    minNumbers = min(numbers)

    numbers = maxNumbers, minNumbers

    return numbers

print(high_and_low("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"))

答案 2 :(得分:0)

从移动设备上写字,抱歉,如果格式很糟糕。您需要将字符串值转换为数字(整数,浮点)类型。

def high_and_low(numbers):
    a =[int(i) for i in numbers.split(" ")]
    return max(a), min(a)