Почему max () выдает неправильный вывод в python? - PullRequest
0 голосов
/ 18 января 2020
numbers=input("Enter numbers separated by space")
x=numbers.split()
mx=max(x)
print(mx)

Ввод 4 5 29 54 4 0 -214 542 -64 1 -3 5 6 -6.

Вывод должен быть 542, но я получаю вывод как 6!

Ответы [ 3 ]

3 голосов
/ 18 января 2020

Преобразуйте их в целые числа, а затем примените функцию.

numbers=input("Enter numbers separated by space")
x=[int(i) for i in numbers.split()]
mx=max(x)
print(mx)

Вывод:

542
0 голосов
/ 18 января 2020

Другие объяснили, что происходит, но поскольку у Python есть ответ, я воспользуюсь им, чтобы показать вам, что python считает, что происходит.

>>> nums = input('insert space separated numbers ')
insert space separated numbers 1 2 3 4 5
>>> nums
'1 2 3 4 5'
>>> type(nums)
<class 'str'>
>>> nums.split(' ')
['1', '2', '3', '4', '5']
>>> type(nums.split(' '))
<class 'list'>

Здесь все имеет смысл , Мы читаем строку от пользователя, и когда мы разделяем ее, мы получаем список.

>>> type(nums.split(' ')[0])
<class 'str'>

Это все еще имеет смысл, но это то, что требует объяснения. Мы разбиваем строку на список символов. Чтобы интерпретировать это как целое число, нам нужно вызвать для него метод int.

>>> [int(x) for x in nums.split(' ')]
[1, 2, 3, 4, 5]

Собрать все вместе

>>> max([int(x) for x in nums.split(' ')])
5

Чтобы объяснить более подробно выше,

>>> '1' == 1
False
>>> '1' < 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  TypeError: '<' not supported between instances of 'str' and 'int'
0 голосов
/ 18 января 2020

ввод в строке. Вам нужно конвертировать его в целые числа.

numbers=input("Enter numbers separated by space")
x=map(int, numbers.split())
mx=max(x)
print(mx)

#542
...