2013-02-17 1 views
0
float(time) 
if time == '90.00': 
    added = added.getText() 
    if not added == '': 
     added = added.replace(':', '.') 
     added = added.replace('+', '') 
     added = ' '.join(added.split()) 
     float(added) 
     time1 = time+added 
     print time1 

Из футбольных матчей, пытающихся добавить «время травмы» до 90 минут. Любая идея, почему это не работает. Я просто получить их как сторону для печати бок а-ляДобавление чисел приводит к странному результату - например. «90.005.25»

90.005.25 

Я думаю, что я быть немым, уже глядя на это слишком долго.

Благодаря

Evan

+4

Код добавляет * строки * - это обычное поведение * string concatenation *. Общее решение состоит в том, чтобы преобразовать строки в числа и * затем добавить их. – 2013-02-17 20:21:05

+0

Это должен быть ответ @pst – HericDenis

+0

извините, спасибо за редактирование для меня. – user2073606

ответ

1
if time == '90.00': 
    time = float(time) 
    added = added.getText() 
    if not added == '': 
     added = added.replace(':', '.') 
     added = added.replace('+', '') 
     added = ' '.join(added.split()) 
     added = float(added) 
     time1 = time+added 
     print time1 

float это не в месте эксплуатации, float(added) возвращается added преобразуется в поплавок, но не изменилось added. Вы не сохраняете возвращаемое значение, поэтому оно переходит в эфир, а added по-прежнему является строкой.

+0

спасибо, я настолько тупой – user2073606

0

Проблема в том, что вы не добавляете числа, вы добавляете строки. В Python, применяя оператор + для строк сцепляет их:

>>> 12 + 34 
46 
>>> '12' + '34' 
'1234' 
>>> 'Hello ' + 'world!' 
'Hello world!' 

@tcaswell уже предусмотрено исправление с помощью поплавка вместо строки сложения.

Другим вариантом является использование модуля времени. Преимущество этого заключается в том, что существуют встроенные функции для таких операций, как конвертация секунд в минуты до нескольких часов и т. Д.