Возникли проблемы при преобразовании строки в числа - PullRequest
1 голос
/ 01 апреля 2020

У меня возникли проблемы при преобразовании строки в целое число. Может ли какое-либо тело помочь мне в этом или какой-либо альтернативный метод?

x=int("4 5 29 54 4 0 -214 542 -64 1 -3 6 -6")

ValueError: invalid literal for int() with base 10: '4 5 29 54 4 0 -214 542 -64 1 -3 6 -6'

Ответы [ 4 ]

0 голосов
/ 01 апреля 2020

Число "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6" не существует. Разделите это (предложите в других комментариях). https://docs.python.org/3.4/library/functions.html?highlight=int#int

0 голосов
/ 01 апреля 2020

Если вы хотите получить список целых чисел, сделайте следующее:

s = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
x = list(map(int, s.split()))
# [4, 5, 29, 54, 4, 0, -214, 542, -64, 1, -3, 6, -6]

print(max(x), min(x))
0 голосов
/ 01 апреля 2020
nums = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"    
[int(item) for item in nums.split()]
0 голосов
/ 01 апреля 2020

ValueError: недопустимый литерал для int () с основанием 10: '4 5 29 54 4 0 -214 542 -64 1 -3 6 -6'

Исключение ValueError ясно говорит, что не может преобразовать вашу строку в целое число с основанием 10.

int () говорит:

Если x равен не число или, если задано основание, то x должен быть строкой, байтами или экземпляром байтового массива, представляющим целочисленный литерал в основании основания.

x = int("2") сработало бы. Однако ваша строка содержит последовательность int. Вы не можете конвертировать str в int с помощью конструктора int.

Вам нужно использовать понимание списка или map , чтобы получить список int и затем оперировать ими.

Использование list comprehension:

s = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
li = [int(i) for i in s.split()]
print(li)

Использование map:

s = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
print(list(map(int, s.split())))

Выходы:

[4, 5, 29, 54, 4, 0, -214, 542, -64, 1, -3, 6, -6]

РЕДАКТИРОВАНИЕ:

s = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
li = [int(i) for i in s.split()]
print(max(li), min(li))

ВЫХОДЫ:

542 -214
...