0

この質問が繰り返されている場合は申し訳ありませんが、私が取り組んでいるコードに行き詰まっています。私はランダムな人々のチームを作成するためのプログラムを自分で作成しており、挿入された量のチームを作成する簡単な方法を見つけようとしています. 私が吸っている領域はここにあります:

print("How many teams would you like?")
numberteam = input("Number: ")

listnumber = 0

teams = []
while numberteam + 1:
    teams.append(Team(str(listnumber + 1)) = [])

私はかなり新しいコーダーなので、変数に式を使用すること以外に、おそらく他の間違いがあると確信していますが、これを修正する簡単な方法に関する提案は素晴らしいでしょう!

また、何かを忘れた場合は、お尋ねください!(ちなみに私はpythonを使っています)

4

2 に答える 2

3

これを試してください(少し整理しました):

print("How many teams would you like?")
numberteam = int(input("Number: "))
# Create a dictionary, where each team has an emtpy list
teams = dict([('Team{}'.format(i), []) for i in range(numberteam)])
# The following also works
# teams = {'Team{}'.format(i):[] for i in range(numberteam)}

その後、次のようにチームにアクセスできます。

teams['Team3'] # returns an empty list

上記のロングハンドは

print("How many teams would you like?")
numberteam = int(input("Number: "))
teams = {}
for i in range(numberteam):
    teams['Team{}'.format(i)] = []
于 2013-10-07T02:03:34.957 に答える
1

多分あなたはこのようなものを探しています:

import random

persons = ['Adan', 'Boris', 'Carla', 'Dora', 'Ernesto', 'Floridalma', 'Gustavo', 'Hugo', 'Ines', 'Juan']
random.shuffle (persons)

count = int(input('How many teams? '))
teams = [persons[i::count] for i in range(count)]
for idx, team in enumerate(teams):
    print ('Team {}: {}'.format(idx + 1, ', '.join(team)))

のコンテンツはperson文字列である必要はありません。カスタムPersonクラスのインスタンスなどを保持できます。


説明:

  1. 選択するリストを作成します。

  2. その場でシャッフルします。

  3. ユーザーにチーム数の入力を求め、入力を整数に変換します。

  4. チームを作成します。person[i::count]インデックス i から始まる count 番目の各要素を person から選択します。したがって、たとえば count が 3 の場合、最初のチームでは (シャッフルされた) インデックス 0、3、6 などがあり、2 番目のチームでは 1、4、7 などです。

  5. 印刷してください。


一般的なスライス表記はiterable[start:stop:step].


または、辞書を使用する場合は、辞書内包表記を使用できます。

teams = {'Team{}'.format(i + 1): persons[i::count] for i in range(count)}
for k, v in teams.items():
    print ('{}: {}'.format(k, ', '.join(v) ) )
于 2013-10-07T02:09:43.133 に答える