2015-04-02 4 views
0

Я пытаюсь разобрать уравнения в виде подготовленного текста (например: «0,035 * Vp-31.5»),Python3: Почему list.append ('string') присоединяется к элементу списка, чтобы не перечислить себя?

экстракт десятичных чисел, сохранить их в списке и заменить их на «X» в уравнении. Тогда все вернуть ...

Странный выход: ('0,035 * Vp-31,5', ['0.03531.5'])

Оно должно быть: ('X * Vp -X», ['0,035', '31.5'])

def const(eqNo): 
    temp = '' 
    args = [] 
    eq = eq_s[eqNo] 
    for i in range(len(eq)): 
     if eq[i].isdigit(): 
      temp+=eq[i] 
     elif eq[i] == '.': 
      temp+=eq[i] 
     elif eq[i].isdigit == False: 
      if len(temp) != 0: 
       args.append(temp) 
      temp = '' 
    else: 
     if len(temp) != 0: 
      args.append(temp) 
    for j in args: 
     eq.replace(j,'X',1) 
    return eq, args 
+0

Я не знаю, является ли это вашей единственной проблемой, но для вашего elif нужны некоторые круглые скобки: 'elif eq [i] .isdigit() == False:'. Или, более идиоматично, 'elif not eq [i] .isdigit():'. Или, подумайте об этом, вы уже знаете, что 'isdigit' является ложным, поскольку условие' if' потерпело неудачу, поэтому, я думаю, вы можете удалить условие 'elif' и просто написать' else: ' – Kevin

ответ

1

ошибка с этим

elif eq[i].isdigit == False: 

Вы забыли скобку после isdigit, она должна быть

elif eq[i].isdigit() == False: 

Ура!

+0

Спасибо! Иногда такие ошибки занимают много времени (( – Inqa

+0

Без проблем, рад, что я мог бы помочь. –