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

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

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

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

Q&A

解決済

1回答

744閲覧

Pythonでランダムで生成された数のリストか辞書を作成する、辞書内のリストへ追加する

666_paru

総合スコア20

Python

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

0グッド

0クリップ

投稿2019/02/28 16:24

初学者で、初投稿になので、わかりにくいところがあったらすいません。

1から9が書かれたカードが1枚ずつあり、
1~9人のランダム生成された人数に
1~9枚のランダム生成された枚数を
1から順番に配る
以下の例のようにそれぞれの手札一覧を出す(括弧の形はなにでもよい)


3人で8枚
(1,4,7)(2,5,8)(3,6)

5で3枚
(1)(2)(3)()()

という問題がありまして
初めて条件を出されてコードを作る形式の問題を解くので、解き方というか考え方からわかりません。

考えたのは、
人数分のリストか辞書を作り、順に格納していく
辞書内に人数分のリストを作り順に格納していく
の2パターンでした

先輩方のコードもなのですが、今回わからなかった以下の3つも教えて頂けると嬉しいです。
1.ランダムに生成された数だけリストや辞書を作成する方法
2.辞書の{key:1}、もしくは辞書内のリスト{key:[1]}に、valueを追加し、{key:1,2}もしくは{key:[1,2]}と増やしていく方法
3.3人で8枚の時に、3枚配ったら最初の人に戻る部分のコーディングへの落とし込み方

どなたかお力を貸してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

1.ランダムに生成された数だけリストや辞書を作成する方法

random.randint(low, high) で [low, high] の範囲の整数をランダムに生成する。

2.辞書の{key:1}、もしくは辞書内のリスト{key:[1]}に、valueを追加し、{key:1,2}もしくは{key:[1,2]}と増やしていく方法

辞書のキーをリストにする。

3.3人で8枚の時に、3枚配ったら最初の人に戻る部分のコーディングへの落とし込み方

0, 1, 2, 0, 1, 2, ... のようなループした値を作りたいときは、以下のようにするのが定石です。

python

1for i in range(10): 2 print(i % 3, end=' ') # 0 1 2 0 1 2 0 1 2 0

サンプルコード

python

1import random 2 3persons = random.randint(1, 9) # 参加人数 4cards = list(range(random.randint(1, 9))) # 使用するカード 5# 使用するカードをシャッフルする。 6random.shuffle(cards) 7 8print('persons: {}, cards: {}'.format(persons, cards)) 9 10d = {i: [] for i in range(persons)} # キーが人の番号、値が持っているカードのリスト 11for i, card in enumerate(cards): 12 d[i % persons].append(card) # その番の人にカードを配る。 13print(d) # 結果
persons: 2, cards: [5, 0, 4, 2, 1, 6, 3] {0: [5, 4, 1, 3], 1: [0, 2, 6]}

コードで不明な点があれば補足しますので言ってください。

投稿2019/02/28 17:12

編集2019/02/28 17:13
tiitoi

総合スコア21956

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

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

666_paru

2019/03/02 06:33

初心的な質問にも丁寧にお答え頂きありがとうございます。 助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問