質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

Python for文の中でランダムに変数を抽出

harug
harug

総合スコア7

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

3回答

-1評価

0クリップ

388閲覧

投稿2022/05/26 10:40

編集2022/05/28 01:24

実現したいこと

for文の中でランダムに個数を指定し,指定した個数分だけ変数をprintできるようにしたいです.

例えば,簡単に以下の例ですと

python

for i in ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu', 'vwx', 'yz']: upper = i.upper() print(upper)

出力結果は次のようになると思います.

ABC DEF GHI JKL MNO PQR STU VWX YZ

しかし,これを例えば,出力したい個数を5と指定すると, 次のように10回の繰り返しの中で5つの数を順に,かつランダムに抽出したいのです.

DEF JKL MNO VWX YZ
ここで,私の都合上,必ずプログラムの一行目と2行目の部分は固定したままでお願いします.そして,forの中でこれを実現できるようにしたいです.

つまり,9回の繰り返しの中で4回は出力せず,5回だけ重複なしでランダムに,大文字のアルファベットを抽出したいです.

これらを実現でき,簡単に記述できる方法はございますでしょうか.

補足情報(FW/ツールのバージョンなど)

Windows10
conda 4.12.0
Python 3.9.12

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

TakaiY

2022/05/26 12:12

「おそらく,0~1のランダムの数が0.5以上なら~…などと条件分岐すればランダムに抽出することは可能であると思いますが,必ずしも指定した数だけ出力が返ってくるとは限りません」というこの意味がわかりません。 例を見ると、ランダムではなく、増加する数列になっているようです。 どのような「ランダムな数の並び」が得たいのでしょう?
harug

2022/05/27 06:30

質問内容を変更いたしました. 今一度,目を通していただけますとありがたいです. 宜しくお願いいたします。
TakaiY

2022/05/27 06:39 編集

まったく違う質問になってしまっています。 回答は消せないので、後から見た人は変な回答が付いているように見えてしまうので、ここは解決済みにして、新たな質問にしたほうがよかったですね。
TakaiY

2022/05/27 06:39

提示のfor分を利用することが前提だとすると、普通のやりかたでは表示する順番は変えられないので、YZ の後に STU を出力するようなことはできません。 もしそのようなことをしたいのであれば、もとのfor分の縛りは無くすべきです。
harug

2022/05/27 06:48

確かにおっしゃるとおりです.次回から気を付けたいと思います. 再び質問内容を修正させていただきました. アルファベットを順番にかつランダムに,指定した個数だけ取得するという前提でお願します.
TakaiY

2022/05/27 07:08

これ、ループの中に実装して、しかも各文字列の出現頻度を揃えたいということだととても難しいと思うんだけどどうだろう。 単に毎回ランダムに引いていくと、足りなくなったりするし、
harug

2022/05/27 07:16

なるほど. でしたら,このような問題に都合の良いメソッドなども存在しないのでしょうか…
TakaiY

2022/05/27 08:31

すでに回答に出てますが、random.sample() です。 回答では数値だったので、数値のリストを渡していますが、文字列のリストを渡せば目的のものが得られるでしょう。
harug

2022/05/27 16:24

random.sample()を使用すると,目的どおりに実装することができました. ご助言ありがとうございました.

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。