2012-04-06 12 views
0

rの内容をmainから2にどのように格納して渡すのですか? r =何かを固定するとrを表示しますが、変数の内容をrに渡して保持するにはどうすればいいですか?私はrandom.getstate/setstateを試しましたが、「関数オブジェクトは添字付きではありません」と言っていました。python 3.2関数間の変数にデータを渡す方法

import random 
from random import randrange 

def main(): 
    r = random.randrange(1,13,1) 
    print (r) 

r = random.randrange(1,13,1) 


def two(): 
    if r==7 or r==11: 
     print (r) 
    else: 
     print (r) 

    main() 
    two() 
+0

どのように 'random.getstate'について知りましたか?それはまったく無関係です。関数間で情報を渡す方法は、関数が何をしても同じであり、あなたが 'random'モジュールを使っているという事実とはまったく無関係なので、なぜそこを掘り起こすのか理解できません助けるかもしれない何か。これらは、モジュールのインポートによって他人のコードを操作しようとする前に、まず学習する必要があるプログラミングの基本です。はい、これは最初は非常に限られたものを書くことを意味します。 –

+0

@KarlKnechtel私は実際にそのコードを書いていましたが、今はPythonプログラミングクラスを取っていますので、私が行ったことがPythonのドキュメントで見たときに他の人のコードを取っていたという前提を理解できません。次回は、あなたが推測する前に考える。それは不快です。 – user1316212

答えて

1

まあ、状況に応じて、あなたのいずれかのクラスを作るか、またはデータを返し、その後、後者は、例えば、あなたのコード与えたいものはおそらくですので、引数としてそれを渡したいです:

def main(): 
    ... 
    r = do_something() 
    ... 
    return r 

def two(r): 
    ... 
    do_something_else(r) 
    ... 

r = main() 
two(r) 

これはあなたがエンティティとして定義することができ、何かの中に起こっていた場合、あなたはクラスでそれを行うことができます:あなたはACを作成しているよう

class Main(): 
    def main(self): 
    ... 
    self.r = do_something() 
    ... 

    def two(self): 
    ... 
    do_something_else(self.r) 
    ... 

main = Main() 
main.main() 
main.two() 

しかし、この場合には、これは不要です本当に何もカプセル化していない宇宙船。

+0

クラスに関するヘルプとコメントをありがとう! – user1316212

+0

これがあなたの質問に答える場合、心配する必要はありません。[accept it](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)。 –

2

使用の戻り値と関数のパラメータ:

import random 
from random import randrange 

def main(): 
    r = random.randrange(1,13,1) 
    return r 

def two(r): 
    if r==7 or r==11: 
     print (r) 
    else: 
     print (r) 

r = main() 
two(r) 

機能mainはランダムな値を計算し、それが呼び出された場所に戻します。戻り値を変数(この場合はrとも呼ばれる:r = main())に格納できます。ただし、rという名前を付ける必要はありませんが、別の名前を付けることもできます。

twoに値を渡すには、パラメータとして渡すことができます。 def two(r):のように、twoファンクションにはパラメータ(rとも呼ばれる)が必要になり、そのファンクションで使用されます。ここでも、これはrと呼ばれる必要はありませんが、同じ名前を使用するのが適切です。

+0

@lattywareありがとう!それは素晴らしかった! – user1316212

+0

そして説明に感謝します! – user1316212

関連する問題