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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

6回答

5177閲覧

外のループを関数から抜ける方法

Untitled_Sample

総合スコア192

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/10/14 14:15

諸事情により、外側のループを抜ける方法を探してます。

コードを簡素にして、やりたい事を下記です。
実行ではシステムエラーですが、何とか、break文通す方法は有りませんか?

python

1 2def xxx(): 3 return break 4 5for i in range(5): 6 if i==3: 7 xxx()

xxx()をbreakと書き直すと言う回答は求めていません。

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

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

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

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

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

y_waiwai

2018/10/14 14:19

質門が意味不明です。なにをやりたいんでしょうか
guest

回答6

0

「例外」を使うくらいでしょうか。

投稿2018/10/14 14:18

otn

総合スコア84533

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

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

0

def xxx(): return 'break' for i in range(5): if i==3: eval(xxx())

投稿2018/10/16 19:24

python_master

総合スコア34

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

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

LouiS0616

2018/10/17 01:25

それ動かないですよ。
guest

0

... xxx()をbreakと書き直すと言う回答は求めていません。 ...

この理由、事情が知りたいです。
対応が必要な箇所がたくさんあるなら try -catch に書き換えるより, break に書きけるほうが、編集間違する可能性は低いです。

正常な実行の制御を例外を使って行うのはアンチパターンの一つです。

  • 例外設計における大罪

https://www.slideshare.net/t_wada/exception-design-by-contract

page 14
...
例外を使用する• 例外は、その名が示す通り、例外的条 件に対してのみ使用するべきです。通 常の制御フローに対しては、決して使 用すべきではありません。
...

投稿2018/10/15 21:36

katoy

総合スコア22324

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

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

Untitled_Sample

2018/10/16 01:42

数年前に描いたコードが読めない為に必要な処理となりました。 関数自体もSample01など適当で有り、コメントもありません。 冒頭から読んでも、時系列に成ってません。 何してるのかも分からないので、エラー文を飛ばして、取り敢えず実行したい。 と、言うのが質問の事情です。
guest

0

ベストアンサー

例外処理する方法。

python

1def xxx(): 2 raise StopIteration 3 4try: 5 for i in range(5): 6 print(i) 7 if i==3: 8 xxx() 9except StopIteration: 10 pass 11

投稿2018/10/14 14:53

hayataka2049

総合スコア30933

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

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

Untitled_Sample

2018/10/14 14:57

例外を技と発生させて、ループを抜けるのが適して居ました。 コードが分かりやすいので、ベストアンサーに選びました。
guest

0

Python詳しくないですが、例外処理をしないならば、関数分割の性質上できるはずないです。下請け関数の中で呼び出し側に影響を与えるならば設計が怪しいものになります。

戻り値を判定してbreakするならわかりますが。

投稿2018/10/14 14:32

HogeAnimalLover

総合スコア4830

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

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

0

greenlet

Python

1For example:: 2 3 from greenlet import greenlet 4 5 def test1(): 6 print(12) 7 gr2.switch() 8 print(34) 9 10 def test2(): 11 print(56) 12 gr1.switch() 13 print(78) 14 15 gr1 = greenlet(test1) 16 gr2 = greenlet(test2) 17 gr1.switch()

投稿2018/10/14 14:26

編集2018/10/14 14:38
hichon

総合スコア5737

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問