使用reverse时,'TypeError:'list'对象不可调用'

时间:2015-12-12 16:07:53

标签: python python-2.7

我真的找不到错误。你能帮忙吗?

A1     B1     C1     D1    E1    F1
Warm   Cold   Warm   Cool  Warm  Cold

我得到的错误:

import re
while True:
    a = raw_input() #unos

    # stepenovanje
    list = re.findall(r'\d+(?:\.\d+)?(?:[\^]\d+(?:\.\d+)?)+', a) #odvajamo stepene
    for elem in list:
        powers = elem.split("^")
        powers = list(reversed(powers)) #obrtanje liste
        print powers, 'pow'
        result = float(powers[1]) ** float(powers(0))
        powers = powers.remove[0]
        powers = powers.remove[0]
        while len(powers) > 1:
            result = result ** float(powers[0])
            powers = powers.remove[0]
        result = result ** float(powers[0])
        a = a.replace(list[list.index(elem)], str(result)) #smestanje rezultata na mesto cinilaca u stringu a
        print a, 'posle stepenovanja'

2 个答案:

答案 0 :(得分:1)

您已将re.findall()的结果分配给名称list

list = re.findall(r'\d+(?:\.\d+)?(?:[\^]\d+(?:\.\d+)?)+', a) #odvajamo stepene
不要这样做。现在它是一个列表实例而不是list 类型。重命名该变量:

degrees = re.findall(r'\d+(?:\.\d+)?(?:[\^]\d+(?:\.\d+)?)+', a)
for elem in degrees:

我还不确定当您直接使用list[list.index(elem)] 时使用elem的原因。

答案 1 :(得分:0)

我发现了一个错误。在result = float(powers[1]) ** float(powers(0))我使用()而不是[]。谢谢!