Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 4, 2013 10:21:26

admyn
От:
Зарегистрирован: 2006-12-20
Сообщения: 10
Репутация: +  1  -
Профиль   Отправить e-mail  

cannot concatenate 'unicode' and 'float' objects

a = ‘15’ # это строка
b = int(a) # а это уже как бы номер integer
c = float(b) # номер с плавающей точкой, ака float

Если я правильно понял, то вроде так :)



Офлайн

#2 Июнь 4, 2013 10:24:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

cannot concatenate 'unicode' and 'float' objects

robot_chickn
мне нужно их сохранить как числовые переменные.
И в каком месте Вашего кода это происходит?



Офлайн

#3 Июнь 4, 2013 10:28:37

robot_chickn
Зарегистрирован: 2013-03-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

cannot concatenate 'unicode' and 'float' objects

я совсем недолго работаю с python и как я понял, то для него нет особой привязки к переменным. поэтому я делал так:

Lan = values[3]
Lat = values[5]

Видимо надо делать так:
Lan = float(values[3])
Lat = float(values[5])

верно??

Отредактировано FishHook (Июнь 4, 2013 10:37:19)

Офлайн

#4 Июнь 4, 2013 10:33:04

admyn
От:
Зарегистрирован: 2006-12-20
Сообщения: 10
Репутация: +  1  -
Профиль   Отправить e-mail  

cannot concatenate 'unicode' and 'float' objects

Дык, попробуете, посмотрите результат и поймёте верно или нет :)



Офлайн

#5 Июнь 4, 2013 10:37:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

cannot concatenate 'unicode' and 'float' objects


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



Офлайн

#6 Июнь 4, 2013 10:46:45

robot_chickn
Зарегистрирован: 2013-03-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

cannot concatenate 'unicode' and 'float' objects

))))

спасибо большое!! все работает, вы мне очень помогли.
можете еще сказать, если вдруг туда попадут не цифры, а какая нибудь другая фигня, то программа выдает ошибку, как можно этого избежать? (используя условие)

Офлайн

#7 Июнь 4, 2013 10:49:42

robot_chickn
Зарегистрирован: 2013-03-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

cannot concatenate 'unicode' and 'float' objects

FishHook
Видимо, нужно периодически включать в творческий процесс голову. Если ты разбиваешь строку на подстроки, каким волшебным образом часть этих подстрок вдруг преобразуются в числа? Интерпретатор должен догадаться, что тебе нужно число?

до этого в описаниях не встречал таких преобразований в числа и думал, что одним из преимуществ python есть не жесткая привязка к параметрам переменных.
это же все таки раздел для новичков.

Офлайн

#8 Июнь 4, 2013 10:58:01

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

cannot concatenate 'unicode' and 'float' objects

robot_chickn
можете еще сказать, если вдруг туда попадут не цифры, а какая нибудь другая фигня, то программа выдает ошибку, как можно этого избежать? (используя условие)

Как вариант:
>>> x = 5
>>> isinstance(x, int)
True
>>> x = 'str'
>>> isinstance(x, int)
False

Если с if:
if isinstance(x, int):
   print('Это число')
else:
   print('Это не число')



————————–
Истина где-то рядом

Отредактировано alexbadaloff (Июнь 4, 2013 11:02:29)

Офлайн

#9 Июнь 4, 2013 11:04:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

cannot concatenate 'unicode' and 'float' objects

robot_chickn
есть не жесткая привязка к параметрам переменных.
Смотри
print "1"+"1"
>>> 11
print 1+1
>>> 2
print "1"+1
>>>????????

>>>как можно этого избежать? (используя условие)
s=["1.5","3","dsfsd","4.6"]
def is_digit(i):
    try:
        float(i)
        return True
    except ValueError:
        return False
print map(float, filter(is_digit, s))



Офлайн

#10 Июнь 4, 2013 11:58:13

robot_chickn
Зарегистрирован: 2013-03-25
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

cannot concatenate 'unicode' and 'float' objects

alexbadaloff

я не совсем это имел в виду. т.к. я работаю с потоком данных и выхватываю от туда только нужную мне информацию, мне бы хотелось предварительно проверить, что действительно буду сохранять число без всякого мусора.
Данные обычно получаю правильные, но бывает, что числа приходят объединенные с соседней информацией, например так:
3723.2475N
И тогда программа выдает ошибку.
В связи с этим, я бы хотел проверять полученную информацию, что в ней содержатся только цифры и точка.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version