Python 意外的最大值,但正确的最小值

Python 意外的最大值,但正确的最小值,python,Python,我希望发生什么:打印输出('542','-214') 当前发生的情况:打印出('6','-214') 我不知道为什么最小数字是正确的,但6被用作最大数字 我的Python代码: def high_and_low(numbers): numbers = numbers.split(" ") maxNumbers = max(numbers) minNumbers = min(numbers) numbers = maxNumbers, minNumbers

我希望发生什么:打印输出('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还是回来了。

这对我很有用:

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
,这是获得所需结果的正确方法。

好的,您是在对字符串排序,而不是对int排序。 您尝试对`int(max(numbers))执行的操作只会将“maximum string”更改为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"))

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


因为在jezrael的评论之后是字符串,而不是整数。将
map(float,numbers.split())或
map(int,numbers.split())
替换为
numbers.split(“”)
,就可以了。您将按字典顺序获取字符串。
-214
来自
min()。添加
-1
并将其返回。需要使用
映射转换列表(int,numbers.split())
捕获良好。我解决了这个问题,并且改为使用
numbers.split()
def high_and_low(numbers):
    a =[int(i) for i in numbers.split(" ")]
    return max(a), min(a)