0

私は現在、ランダムカードゲームプロジェクトを行っています.プログラムは5ランダムカードをユーザーに表示する必要があります.(最初の質問):文字のリストをランダムにする方法がわかりません.コードは次のとおりです.

def play():
    hand = ["A","2","3","4","5","6","7","8","9","T","J","Q","K"]

    for i in range(len(hand)):
        card = random.choice[{hand},4]   

    print "User >>>> ",card
    return card

2 番目の質問: ユーザーがカードの位置を変更したい場合。ユーザーは no を入力する必要があります。位置変更の場合、プログラムはカードをランダムに変更する必要があります。例: AJ891、ユーザー入力: 1、 --> A2891。私は何をすべきか?これが私の元のコードですが、うまくいきません

def ask_pos():
    pos_change = raw_input("From which position (and on) would you want to change? (0 to 4)? ")
    while not (pos_change.isdigit()):
        print "Your input must be an integer number"
        pos_change = raw_input("From which position (and on) would you want to change? (0 to 4)? ")
        if (pos_change > 4) :
            print "Sorry the value has to be between 0 and 4, please re-type"
            pos_change = raw_input("From which position (and on) would you want to change? (0 to 4)? ")
    return pos_change

    hand = ["A","2","3","4","5","6","7","8","9","T","J","Q","K"]

    for i in range(len(hand)):
        card = random.choice[{hand},4]
        new = random.choice[{hand},1]

            for i in range(len(card)):
                if (card[i] == pos_change):
                    card = card + new

    return card
4

3 に答える 3

2

1)

random.choice[{hand},4]

それはうまくいきません、悪い構文エラーです。また、選択してもうまくいきません。サンプルはあなたが望むものです:

random.sample(hand, 5)

2)

pick = random.sample(hand, 5)

change = 2  # Entered by the user

pick[change] = random.choice([x for x in hand if x not in pick])
于 2013-04-03T05:16:08.370 に答える
1

最初の質問に答えるには:

import random
hands = ["A","2","3","4","5","6","7","8","9","T","J","Q","K"]
def play():
    cards = random.sample(hands,5)
    print "User >>>> ", cards
    return cards

random.choice[{hand},4]構文エラーになるはずです。()まず、括弧ではなく括弧を使用して関数を呼び出します[]{}また、すでにリストになっているため、何もする必要がないため、中括弧を手に入れる必要がある理由がわかりません。

2番目の質問を書き直しました:

def ask_pos(hand):
    while 1:
        pos_change = raw_input("From which position (and on) would you want to change? (0 to 4)? ")
        if int(pos_change) < 0 or int(pos_change) > 4:
            continue
        else:
            break
    hand[int(pos_change)] = random.choice(hands)
    return hand

実行時:

>>> myhand = play()
User >>>>  ['6', '8', 'A', '9', '4']

>>> ask_pos(myhand)
From which position (and on) would you want to change? (0 to 4)? 0
['Q', '8', 'A', '9', '4']
于 2013-04-03T05:24:42.480 に答える
0

random.randrange(number) を使用して、その位置のインデックスを引き出すことができます。

于 2013-04-03T04:49:30.750 に答える