前提・実現したいこと
1.変数a,b,c,d,eを用いた計算式を要素として格納したリストstuffに、 a,b,c,d,eをint型で宣言し、代入して計算結果を求めました。
2.このstuffを再利用してa,b,c,d,eをstr型で宣言しなおし、代入すると文字列が連結した状態で出るのですが、
これを代入だけして計算が行われないようにする方法はないでしょうか
3.また、上記ができない場合stuffの要素の計算式をそのまま文字列にして出力することは可能でしょうか
何も代入していない状態だとstuffに変数を計算式として格納した要素はNoneTypeになって
map関数で取得して文字列に変換しようとしたのですがエラーが出ます
変数を宣言すると式そのものではなく代入された結果が出力されます
変数の式を文字列そのものとして扱う方法はないでしょうか
発生している問題・エラーメッセージ
[a, b, a2+b, a+c, b2+c2, a+d, b4+e, d+e, a2+c2+e] にfoodsを代入したa,b,c,d,eを入れると
["卵","魚","卵卵魚","卵小麦","魚魚小麦小麦","卵肉","魚魚魚魚塩","肉塩"] と文字列が連結した状態で出ます
この代入を下記のように計算が行われずに計算式のままの状態で出力したいのですが、そのような方法は可能でしょうか
["卵","魚", "卵2+魚","卵+小麦","魚2+小麦2","卵+肉","魚4⁺塩","肉+塩"]
stuff = [a, b, a2+b, a+c, b2+c2, a+d, b4+e, d+e, a2+c2+e]を
下のようにしたい
stuff = ["a", "b", "a2+b", "a+c", "b2+c2", "a+d", "b4+e", "d+e", "a*2+c+2+e"]
該当のソースコード
Python3
1 2 3price = [30, 80, 50, 70, 20] 4a,b,c,d,e = price 5stuff = [a, b, a*2+b, a+c, b*2+c*2, a+d, b*4+e, d+e, a*2+c*2+e] 6print(stuff) 7#[30, 80, 140, 80, 260, 100, 380, 90, 180] 8 9foods = ["卵", "魚", "小麦", "肉", "塩"] 10a,b,c,d,e = foods 11stuff = [a, b, a*2+b, a+c, b*2+c*2, a+d, b*2+e, d+e, a*2+c*2+e] 12print(stuff) 13#["卵", "魚", "卵卵魚", "卵小麦", "魚魚小麦小麦", "卵肉", "魚魚魚魚塩", "肉塩", "卵卵小麦小麦塩"] 14
試したこと
a,b,c,d,eは宣言していない
stuff = [a, b, a2+b, a+c, b2+c2, a+d, b4+e, d+e, a2+c2+e]
new_stuff = list(map(str, stuff))
print(new_stuff)
NameError: name 'a' is not defined
補足情報(FW/ツールのバージョンなど)
Python3.8.1
回答4件
あなたの回答
tips
プレビュー