Mam problem podczas konwertowania ciągu znaków na liczbę całkowitą. Czy jakikolwiek organ może mi w tym pomóc lub jakąkolwiek alternatywną metodę?

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'
1
Zuhair Abid 1 kwiecień 2020, 12:31

4 odpowiedzi

Najlepsza odpowiedź

Jeśli chcesz uzyskać listę liczb całkowitych, wykonaj następujące czynności:

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
schwobaseggl 1 kwiecień 2020, 10:06
nums = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"    
[int(item) for item in nums.split()]
0
Alexander Lekontsev 1 kwiecień 2020, 09:33

Numer „4 5 29 54 4 0 -214 542 -64 1 -3 6 -6” nie istnieje. Podziel go (zasugeruj w innych komentarzach). https://docs.python.org/3.4/library/ functions.html? highlight = int # int

0
Donka 1 kwiecień 2020, 09:41

ValueError: nieprawidłowy literał int () o podstawie 10: '4 5 29 54 4 0 -214 542 -64 1 -3 6 -6'

Wyjątek ValueError wyraźnie mówi, że nie można przekonwertować str na int z podstawą 10.

int () mówi:

Jeśli x nie jest liczbą lub jeśli podano podstawę, to x musi być ciągiem, bajtami lub instancją bytearray reprezentującą literał liczby całkowitej w podstawie podstawy.

x = int("2") by działało. Jednak Twój ciąg zawiera sekwencję int. Nie możesz przekonwertować swojego str na int przy użyciu konstruktora int.

Musisz użyć rozumienia listy lub map, aby uzyskać listę int i operować na nich.

Korzystanie z 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)

Korzystanie z map:

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

Wyjścia:

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

ZMIENIONO:

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))

WYJŚCIA:

542 -214
0
abhiarora 1 kwiecień 2020, 10:15