質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

4110閲覧

『python2.7』if文を使う際のexecでエラーが出てしまう件

mi_tyan

総合スコア13

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/12/18 09:06

###前提・実現したいこと
if exec("life_" +str(1)+ "= zeros([1,1])"):

上のコードを回したいのですが

######エラー文#########
if exec("life_" +str(1)+ "= zeros([1,1])"):
^
SyntaxError: invalid syntax

と出てしまいます

ちなみに
exec("life_" +str(1)+ "= zeros([1,1])")
はきちんと通ります

お手数ですがわかる方教えてください.
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

python2.7のexecは文(statement)なので、戻り値はありません。尚、3.xでは関数ですが戻り値は常にNoneのもよう。

投稿2017/12/18 09:41

hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mi_tyan

2017/12/18 10:59

回答ありがとうございます。
guest

0

ベストアンサー

python2.xではexecprintと同じく文(Statement)であり式(Expression)ではないためです。
よって以下のように代入もできませんし、if文でそれを評価するということもできず、いずれもSyntaxErrorとなります。

Python

1r = print('a') 2r = exec('a=0') 3 4if print('a'): 5 pass 6if exec('a=0'): 7 pass

参考:
execについて
Pythonでの式(Expression)と文(Statement)

投稿2017/12/18 09:36

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mi_tyan

2017/12/18 10:37 編集

回答ありがとうございます なんども申し訳ないのですが 実際は、life_1,life_2,life3.............と言った forループの中で数字に対応した名前のリストを生成し他後に、if文を使いたいのですがどのようにすればよろしでしょうか いま作ろうとしているコードが以下です for g_thre in arange(1,3): exec("life_"+str(g_thre)+"= zeros([len(pic_file)-1,nx*ny])") if A <= g_thre: num_spot1 = 0 else: num_spot1 = 1 exec("life_"+str(g_thre)+"[i,nn-1]= num_spot1") #life_after_plain[i,nn-1] = num_spot1 if i != 0: if exec("life_" + str(g_thre) + "[i-1,nn-1]<0.5"): if exec("life_"+str(g_thre)+"[i,nn-1]>0.5"): for nnn in arange(0,i): exec("life_"+str(g_thre)+"[nnn,nn-1] = 1") if exec("life_" + str(g_thre) + "[i-1,nn-1]<0.5"): の部分でエラーが出てしまいます
can110

2017/12/18 11:00

未検証ですが exec("exp=(life_" + str(g_thre) + "[i-1,nn-1]<0.5)") if exp: 処理 のように、判定結果を別変数expに格納、その結果をif判定でいけないでしょうか?
mi_tyan

2017/12/18 11:29

本当に本当にありがとうございます 圧倒的感謝です! ものすごく助かりました!!!!!
guest

0

修正・追記:

以下のようなエラーなのですね。ifにかかっているものと勘違いしました。

if exec("life_" +str(1)+ "= zeros([1,1])"): ^ SyntaxError: invalid syntax

python

1exec("life_" +str(1)+ "= zeros([1,1])") 2if exec("life_" +str(1)+ "= zeros([1,1])"):

とした際にどこでエラーが出ますか?

もっと前の行でカッコの閉じ忘れによくあるエラーに見えます。

投稿2017/12/18 09:27

編集2017/12/18 10:47
mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mi_tyan

2017/12/18 10:59

回答ありがとうございます 上記の通りです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問