Python 意外的最大值,但正确的最小值
我希望发生什么:打印输出('542','-214') 当前发生的情况:打印出('6','-214') 我不知道为什么最小数字是正确的,但6被用作最大数字 我的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
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)