注目キーワード

【Python】randomモジュールchoiceの使い方

randomモジュールの「choice」関数の使い方にてまとめました。

この関数は引数で受け取った「文字列」、「配列」の中からランダムに1文字または1要素取り出してくれる関数です。

この記事では、サンプルソースを使いながら「random.choice」に「文字列」、「配列」を渡した場合の出力結果を紹介していきます。

対象レベル

Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。

詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。

サンプルソースを読むうえで理解しておきたいこと

基本的にこの章の内容は読み飛ばしてOKです。サンプルソースでわからないところがあれば参照してみてください。

文字列からランダムに1文字選ぶ(random.choice(文字列))

まず初めに、引数に文字列を受け取った場合の挙動についてです。したにサンプルソースを用意しました。

処理の内容は「 abcdef 」からランダムに1文字、「 12345 」からもランダムに1文字選んで標準出力に表示します。

「random.choice」を使うには初めに「random」モジュールをインポートする必要があります。(2行目)

import random

そして引数に文字列を渡してあげます。

print(random.choice("abcdef"))print(random.choice("12345"))

実行結果は以下のとおりで、3回実行してみました。それぞれ異なった文字が表示されています。

sample_random_choice_1.py実行

数字を渡すとエラーになる

引数に数字を渡すとエラーが発生するので注意しましょう。

sample_random_choice_error.py実行

エラーの内容を見ると「int」型は「len()」が使えなくてエラーになっているみたいですね。

これを回避するためには、先ほど紹介したサンプルソースのように、「12345」をダブルクォーテーションで囲ってあげましょう。

もしくは、後で紹介する方法で「 数字の配列 」渡す場合もエラーは起きません。

TypeError: object of type 'int' has no len()

配列からランダムに要素を選ぶ (random.choice(配列))

次に、「random.choice」に配列を渡してみます。

サンプルソースは以下で、上から順番に、

スポンサーリンク

  • 数字の配列
  • 1文字の要素が格納された配列
  • 2文字の要素が格納された配列

がランダムで抽出されます。

実行結果は以下のように配列の要素が1つだけランダムに選択されます。

まとめ

「random.choice」に文字列を渡すとランダムに1文字を抽出する

「random.choice」に配列を渡すとランダムに1要素抽出する

「random.choice」に数字を渡すとエラーが発生するので、文字列に変換するか、配列で渡す