90613


原因を教えて下さい。よろしくお願いします。

[code]

    from sympy import *
    A=Symbol('A',real=True,positive=True)
    A=solve(Eq(1,A**2),A)
    print("# 1",A)
    A=solve(Eq(1,A**2),A)
    print("# 2",A)
    # Traceback (most recent call last):
    #   File "C:/Users/xxx/PycharmProjects/pythonProject/main.py", line 5, in <module>
    #     A=solve(Eq(1,A**2),A)
    # TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'int'
    # # 1 [1]
    
[/code]

1回だと、うまくいきます。

[code]

    from sympy import *
    A=Symbol('A',real=True,positive=True)
    A=solve(Eq(1,A**2),A)
    print("# 1",A)
    # 1 [1]
    
[/code]

(20220819)  
変数名を変更

[code]

    from sympy import *
    A=Symbol('A',real=True,positive=True)
    B=Symbol('B',real=True,positive=True)
    A=solve(Eq(1,A**2),A)
    print("# 1",A)
    B=solve(Eq(1,B**2),B)
    print("# 2",B)
    # 1 [1]
    # 2 [1]
    
[/code]

Symbolを2回

[code]

    from sympy import *
    A=Symbol('A',real=True,positive=True)
    A=solve(Eq(1,A**2),A)
    print("# 1",A)
    A=Symbol('A',real=True,positive=True)
    A=solve(Eq(1,A**2),A)
    print("# 2",A)
    # 1 [1]
    # 2 [1]
    
[/code]

printを続けて

[code]

    from sympy import *
    A=Symbol('A',real=True,positive=True)
    print("# 1",solve(Eq(1,A**2),A))
    print("# 2",solve(Eq(1,A**2),A))
    # 1 [1]
    # 2 [1]
    
[/code]


CC BY-SA 4.0
2022-08-18T10:14:37.957
90610
2022-08-19T10:02:02.760
2022-08-19T10:02:02.760
47526
47526
question
python sympy
sympyでsolveを2回実行すると、TypeErrorがでます。


1行目の`A=Symbol('A',real=True,positive=True)`を実行した後のAのタイプは`<class
'sympy.core.symbol.Symbol'>`です。※print(type(A))で確認しました。  
2行目の`A=solve(Eq(1,A**2),A)`を実行した後のAのタイプは`<class 'list'>`です。

2回目の`A=solve(Eq(1,A**2),A)`でエラーになるのは`<class
'list'>`である`A`に対して演算を行っているからだと思います。

以下のように演算結果の変数名をAではないものに変えれば、2回目も同じ結果になると思います。

[code]

    from sympy import *
    A=Symbol('A',real=True,positive=True)
    ans=solve(Eq(1,A**2),A)
    print("# 1",ans)
    ans=solve(Eq(1,A**2),A)
    print("# 2",ans)
    
[/code]


CC BY-SA 4.0
2022-08-18T12:10:32.773
90613
2022-08-18T12:10:32.773
35558
90610
answer