Сообщить об ошибке.

Преобразование числа из строки в тип int и float

Python не позволит сложить строку и число, даже если строка выглядит как число, то есть содержит только цифры:

>>> '50' + 1
# TypeError: cannot concatenate ‘str’ and ‘int’ objects

В архитектуре языка оператор '+' может означать как операцию сложения, так и операцию конкатенации, вследствие чего выбор типа преобразования становится неочевидным. Поэтому интерпретатор воспринимает такую инструкцию как ошибочную. В этом случае нужно использовать инструменты преобразования, чтобы можно было интерпретировать строку как число или наоборот.

Преобразование строковой версии числа в int или float.

Преобразование строки в тип int.

Дополнительно смотрите описание функции int()

# преобразование строки в число
>>> num = '50'
>>> if num.isdigit():
...     int('50')
# 50

>>> float('1.5')
# 1.5

# преобразование числа в строку
>>> str(50)
# '50'

Функции int и float преобразует строку в число, функция str преобразует число в строковое представление. В Python нельзя смешивать строковые и числовые типы в таких операторах, как '+', но можно вручную выполнить необходимые преобразования перед выполнением.

Преобразование строки в тип float.

Дополнительно смотрите описание функции float()

>>> x = '50'
>>> y = 1
>>> z = '1.5'

# Операция сложения
>>> int(x) + y + float(z)
# 52.5

# Операция конкатенации
>>> x + str(y) + z
# '5011.5'

# Преобразование строки с записью вещественного
# числа в число с плавающей точкой
>>> text = '5.79E-10'
>>> float(text)
# 5.79e-10

Преобразование списка строк в список чисел.

Для преобразования списка строк с числами в список целых чисел можно ввести проверку перед преобразованием на то, что строка состоит только из десятичных чисел str.isdigit().

>>> str_list = ['8.3', '11', 'девять', '1', '5', '3', '9', 
... 'пять', '15', '13', '7', '13.9', 'число']
>>> num_list = []
>>> for i in str_list:
...     if i.isdigit():
...         num_list.append(int(i))

>>> num_list.sort()
>>> num_list
# [1, 3, 5, 7, 9, 11, 13, 15]

Для преобразования списка строк с числами включая десятичные c разделением их по типам, необходимо перед преобразованием в тип float проверять строку на вхождение точки '.'.

>>> str_list = ['8.3', '11', 'девять.', '1', '5', '3', '9', 
... '.пять', '15', '13', '7', '13.9', 'число']
>>> def str_to_num(str):
...     if '.' in str and str.replace('.', '').isdigit():
...         return float(str)
...     elif str.isdigit():
...         return int(str)
... 
>>> num_list = []
>>> for i in str_list:
...     n = str_to_num(i)
...     if n is not None:
...         num_list.append(str_to_num(i))

>>> num_list
# [8.3, 11, 1, 5, 3, 9, 15, 13, 7, 13.9]

Для преобразования всех чисел в тип float, можно просто заменять точку в строке с числом и проверять получившуюся строку на десятичное число.

>>> str_list = ['8.3', '11', 'девять.', '1', '5', '3', '9', 
... '.пять', '15', '13', '7', '13.9', 'число']
>>> def is_num(str):
...     if str.replace('.', '').isdigit():
...         return True
... 
>>> num_list = []
>>> for i in str_list:
...     if is_num(i):
...         num_list.append(float(i))
... 
>>> num_list.sort()
>>> num_list
# [1.0, 3.0, 5.0, 7.0, 8.3, 9.0, 11.0, 13.0, 13.9, 15.0]