python中的max函数

为什么输出的是999而不是1000呢?是哪里写错了吗?初学者,求帮忙。

img

该回答引用ChatGPT-3.5

根据你的代码,输入的字符串被使用split()函数拆分为一个字符串列表,列表中的每个元素都是输入字符串中的一个数字。由于输入的数字都是字符串类型,因此在比较它们的大小时会使用字典序比较。在字典序比较中,"999"大于"1000",因为在第一个位置上,"9"比"1"要大。因此,程序输出了"999"而不是"1000"。


为了得到正确的结果,你需要将字符串转换为整数类型。你可以通过以下代码实现:

x = input().split()
x = [int(i) for i in x]  # 将每个元素转换为整数
print(max(x))

这样做会将输入的字符串列表中的每个元素都转换为整数类型,然后比较它们的大小并输出最大值,结果应该是1000。

你示例中的x中的每一项都是字符串,字符串比大小是根据第一个位置的先后顺序来的,所以输出的999字符串;而你实际是想获取最大的数字,是int类型,所以要把输入的每一项转化为 init,然后再来比较。


# 1 3 77 999 1000 43 298 23 42
x= map( int , input().strip().split() )
print(max(x))