2017-05-29 22 views
-1

私の質問から時間をとっていただきありがとうございます。関数に変数を代入し、それらにrandomを使用します。

現在、私はクラスのメソッドを作成していますが、これまでのところ私はこれまでのことです。

def scramble_words_password(self, words): 
    if words: 
     words = words.split() 
     words_count = range(len(words)) 

     while True: 
      num = random.choice(words_count) 
      del(words_count[num]) 
      password = [letter for letter in list(words[num])] 

数ヶ月前、私は私が欲しい

...変数に機能をASSINGする方法を説明したチュートリアル、出くわし、およびそれらにランダムのようなものを使用しますが、私は再びそれを見つけるカント私の関数/メソッドはランダムにletter.lower()letter.upper()を私の関数/メソッドの最終行の理解に使用する方法ですが、どうすればそれを達成でき、それでも理解できるでしょうか。

FYI、私は機能のATMが無限ループであることを知っているので、何のスマート発言してください。)

+0

関数名は、変数とよく似ています。それらをパラメータとして他の関数に渡したり、関数のリストを作成することができます。 –

+0

あなたの質問はここで答えられると思います:https://stackoverflow.com/questions/10354163/assigning-a-function-to-a-variable – rghome

+1

[関数への関数の割り当て]の可能な複製(https:// stackoverflow .com/questions/10354163/function-to-a-variable) – rghome

答えて

1

ユーザーrandom.choice

def scramble_words_password(self, words): 
    if words: 
     words = words.split() 
     words_count = range(len(words)) 
     words_funcs = [str.upper, str.lower] 
     while True: 
      num = random.choice(words_count) 
      del(words_count[num]) 
      password = [random.choice(words_funcs)(letter) for letter in list(words[num])] 

主なコールは、彼らはあなたがちょうどそれらに手紙を渡すことができる呼び出し可能であるため、リストからランダムな要素を選択します、random.choice(words_funcs)(letter)、説明します。文字列(他の組み込み型も含む)からのすべてのメソッドは静的に呼び出すことができるので、str.lowerstr.upperのリストで行うことができます。

+0

まさに私が感謝の気持ちを尋ねたもの:) – Alexander

0

関数名は、多くの変数のように動作しません。それらをパラメータとして他の関数に渡したり、関数のリストを作成することができます。関数のリストを作成し、リスト要素をランダムに選択することをお勧めします。コールするメソッドの一覧を超える

+0

私に例を教えてもらえますか?私がupper()とlower()をリストに入れようとすると、定義されていないエラー – Alexander

+0

が得られます。関数宣言(関数名) 'func_list = [str.upper、str.lower]'を追加する必要があります。ランダム関数を呼び出すには、 'random.choice(func_list)(" string ")' –

+0

@Alexanderは名前だけを使用します。括弧**は関数を呼び出します。 –

関連する問題