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

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

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

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

Q&A

解決済

2回答

3895閲覧

複数の変数を同時にrandom.randintで指定する方法が知りたいです。

kiriyama

総合スコア24

Python

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

0グッド

0クリップ

投稿2021/09/16 04:19

編集2021/09/16 04:39

前提・実現したいこと

初めて質問を投稿させていただきます。及ばない点があるかもしれませんが、よろしくお願いします。

Pythonで変数a、b、cを1~100のランダムな数字を指定したいです。(複数の変数を一斉にランダムな数字に指定できるようにしたいです。)

やろうと思えば「試したこと①」にかいてある通りできるのですが、変数の種類が増えたときに対応が面倒だと感じたので避けたいです。

どうか力をお貸しいただければと思います。

###試したこと①

もちろん

Python

1import random 2 3a = random.randint(1,100) 4b = random.randint(1,100) 5c = random.randint(1,100) 6 7print(a) 8print(b) 9print(c) # 出力はランダムな1~100から選ばれた数字だった 10

をすればいいのですが、先述の通り変数がd、e、...と増えた時に何行もrandom~~を書くのは面倒です。

###試したこと②

私はリストを作ってfor~inで代入すればいいと思いました。
リストを作れば、変数が増えた時にもリストに追加すればいいだけなので、名案かと思われました。

Python

1import random 2 3a = 0 4b = 0 5c = 0 # ここまでで変数をリストにするためにひとまず変数a,b,cに0を代入。 6items = [a,b,c] #変数をリスト化 7for item in items: 8 item = random.randint[1,100] # 変数を順番にrandom.randintで決めているつもり 9 10print(a) 11print(b) 12print(c) # 結果はa、b、c全て0でした。

※インデントの仕方がわからなかったのでスペースで代用しました。申し訳ありません。※

とすればいいと思いましたが、だめでした。

変数を0と指定しなければいいのかと思い、a = 0~c = 0を消すと、そもそもa、b、cが変数と認識されていないのでエラーが出ました。

追記:これをすると変数は変わらず、リストがitems = [45,8,89]のようになっていました。よく考えてみると当たり前でしたね。

###試したこと③
defを使って何かできないかと思い、

Python

1import random 2 3def random_number(): 4 k = random.randint(1,100) 5 return k 6 7a = 0 8b = 0 9c = 0 10items = [a,b,c] 11# このあと何か上手に書きたかったが、思いつかずに断念。 12

としましたが、結局「試したかったこと②」と同じになると思い、解決にはなりませんでした。

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

何を書けばよいかあまりわからず、申し訳ありません。

参考にしたものは
・Progate のスライド
・書籍:Pythonでつくるゲーム開発入門講座 ソーテック社
です。

よろしくお願いします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

三つぐらいなら以下でできます。

python

1>>> import random 2>>> a, b, c = [random.randint(1,100) for _ in range(3)] 3>>> print(a, b, c) 431 89 30

変数が多ければ、変数ではなくリストに入れておいた方が便利でしょう。

投稿2021/09/16 04:38

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kiriyama

2021/09/16 04:49

[random.randint(1,100) for _ in range(3)] という書き方を全く知りませんでした???? リストやfor inの使い方について詳しく調べたいと思います!ありがとうございました!
guest

0

そもそもなのですが、変数がd、e、...と増えた時のことも考えるなら
abのような個別の変数で管理するのではなく
リストや辞書のようなコンテナで管理すべきと思います。

Python

1import random 2 3var = { k:random.randint(1,100) for k in 'abc'} 4print(var) 5print(var['a'])

投稿2021/09/16 04:45

can110

総合スコア38341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問