0

r の内容を main から 2 つに格納して渡すにはどうすればよいですか? r =何かを修正するとrが出力されますが、変数の内容をrに渡したり保持したりするにはどうすればよいですか。random.getstate/setstate を試しましたが、「関数オブジェクトは添え字付けできません」と表示されました。

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()
4

2 に答える 2

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、同じ名前を使用するのが適切なようです。

于 2012-04-06T21:31:29.473 に答える
2

状況に応じて、クラスを作成するか、データを返し、それを引数として渡します。後者は、おそらくコードに必要なものです。たとえば、次のようになります。

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

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

r = main()
two(r)

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

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

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

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

ただし、この場合、実際には何もカプセル化しないクラスを作成しているため、これは不要です。

于 2012-04-06T21:31:01.250 に答える