2017-06-20 10 views
1

私はいくつかの機能を持っています。私の最終目標は、リストからランダムな単語を選び、その単語を新しいリストに分割し、選択した単語の長さを印刷することです。ランダムリストの長さを取得

def choose_word(): 
    for i in range(1): 
     words = ['christmas', 'europe', 'icecream', 'america', 'apple', 'hamburger', 'refrigerator', 'dinosaur', 'television'] 
     word = list(random.choice(words)) 
     return word 

def main(): 
    print(len(choose_word())) 
    print(choose_word()) 

実際にはlen()が正しい値を印刷していないという問題があります。ランダムに選択された単語の操作を呼び出すたびに、単語が変更されている可能性があります。これを止める方法はありますか? main()を実行すると、数字の後ろに単語が印刷されますが、数字は正しくありません。

+1

あなたの機能は、あなたがそれを呼び出すたびに右の別の単語を選択することを実現していますか?もちろん2回連続して呼び出すと結果が異なりますし、範囲(1)内の目的は何ですか? –

答えて

0

これは、関数を2回呼び出すため、最初の呼び出しで1つのランダムな単語の長さが得られ、2回目に別の単語の出力が得られるからです。あなただけのたら、それを呼び出し、変数にその戻り値を格納し、変数というを使用する必要があります。

def main(): 
    word = choose_word() 
    print(len(word)) 
    print(word) 

はまた、あなたがあなたのchoose_word機能で不要なループを作っているようです。それはあなたのコードに目的を果たしていません。 random.choiceへの呼び出しは、あなたのために単語を選択するすべての作業を行っています。ここで何らかのループを行う必要はありません。

決勝コード:

def choose_word(): 
    words = ['christmas', 'europe', 'icecream', 'america', 'apple', 'hamburger', 'refrigerator', 'dinosaur', 'television'] 
    word = list(random.choice(words)) 
    return word 

def main(): 
    word = choose_word() 
    print(len(word)) 
    print(word) 

デモ:

8 
['i', 'c', 'e', 'c', 'r', 'e', 'a', 'm']