2010-12-14 4 views
5

Pythonにgoto演算子がないので、代わりにどのような手法を使用できますか?条件でGOTOに相当する、Python

条件が真の場合、スレッド1に行きます。偽であれば、スレッド2に行きます。 スレッドでは、何か小さいものを実行した後、他のすべてのアクションが実行されるスレッド2に行きます。私の知る限り

+0

質問する前に検索してください – dheerosaur

+1

スレッド間で移動することはできません – Andrey

+0

あなたの質問には_once以上が必要です。 – kevpie

答えて

5

は、それが(ありがたいことに)存在しないのですが、あなたは「後藤」モジュールはエイプリルフールのジョークは、4月1日 2004年に出版されたこのlink

をチェックする必要がありますはい、それそれにもかかわらず、それは冗談です。実際のコードでは使用しないでください!

+3

彼をPythonプログラミングの暗い味方に誘惑しないでください:-)幸いにも、それはちょうどエイプリルフールの冗談だと書かれています。 –

6
def thread_1(): 
    # Do thread_1 type stuff here. 

def thread_2(): 
    # Do thread_2 type stuff here. 

if condition: 
    thread_1() 

# If condition was false, just run thread_2(). 
# If it was true then thread_1() will return to this point. 
thread_2() 

編集:私は「スレッド」によってあなたは(それ以外の場合はサブルーチンまたは関数として知られている)コードの一部を意味することを想定しています。並列実行のようにスレッドについて話しているのであれば、その質問にはさらに詳細が必要です。

+0

はい、私はコードの一部を意味しました。これらのすべての関数を "for"の反復に置くことは可能ですか? – Maks

+0

@Maks:はい、もちろんです。 forループにはほとんど何でも置くことができます。 –

2

Pythonはをサポートするように設計されています。コード化の慣行はであり、GOTOはその1つではありません。正しく使用されないと、読めないプログラムロジックにつながる可能性があります。

私はあなたのプログラムのコードをPythonの方法で学習することをお勧めします。他のプログラミング言語の(時には悪い)習慣を守らないでください。 Pythonのドキュメント、実際のP​​ythonプログラムを見て、学びましょう。

14

Pythonにはgoto演算子がないので、代わりにどのような手法を使用できますか?

論理的および意味的にコードを作成します。

if condition: 
    perform_some_action() 

perform_other_actions() 
0
def thread1(): 
    #write your thread 1 code here 

    print("entered no is 1") 

def thread2(): 
    #write your thread 2 code here 
    print("Number is greater or less then one.") 

def main(): 
    a=input() 
    if a==1: 
    thread1() 
    elif a<=1 or a>=1: 
    thread2() 
    #you can use recursion here in case if you want to use agin and again 
    #if you want to print serveral time you can use looping. 
    for i in range(4): 
     main() 
    #if you want to run goto forever and ever and ever then remove loop in 
    #this code. 

#this code will enable you the equivalent of goto statement. 

これは、私は、Python 3.xで毎回使用するものです