-1

私の割り当てはPython 3.3.2で、ここにあります:

1 から 6 までの数字をランダムに生成できるサイコロ オブジェクトのクラスを作成し、ファイルを保存します。

random モジュールと

2 つの Dice オブジェクト a と b を作成し、それらの値を合計します。

ルールはこちら

勝利 = 合計が 7 または 11 に等しい

負け = 合計が 2、3、または 12 に等しい

もう一度ロールする = 合計は、7 がロールされるか、同じ番号が再度スローされるまで、5、6、8、9、10 に等しくなります。


今私が書いたコード:

import random

class Dice:
    '''A class that makes Dice'''

    number = random.randint(1,6)

a = Dice
b = Dice

result = a.number + b.number

def resultgiver():
    if result == '7':
        result == '11'
        print('You won! You got ' ,result,'.')

    elif result == '2':
        result == '3'
        result == '12'
        print('You lost! You got ' ,result,'.')

    elif result == '5':
        result == '6'
        result == '8'
        result == '9'
        result == '10'
        print('Roll again! You got ' ,result,'.')

    elif result == '5':
        result == '6'
        result == '8'
        result == '9'
        result == '10'

    elif result == '7':
        result == '11'

resultgiver()
4

5 に答える 5

1

そして、あなたは書くべきです

if result == 2 or result == 3 or result == 4:

etc を使用して、2 つ以上の条件をチェックします。また、値を Dice.number に一度だけ割り当てるため、a.number は常に常に b.number と等しくなります。これを試して:

class Dice(random.Random):
    def number(self):
        return self.randint(1, 6)
a = Dice()
b = Dice()
result = a.number() + b.number()
于 2013-10-31T20:38:51.543 に答える
1

これ宿題なので、以下について読むことをお勧めします。

コードのこれらの各領域で何か間違ったことをしています。

于 2013-10-31T20:39:19.673 に答える
1

いくつかの問題:

  1. クラス インスタンスを括弧で囲む必要があります。

a = Dice()b = Dice()

  1. resultは整数ですが、すべての if ステートメントは、それが char に等しいかどうかをチェックします。数字を囲むすべての引用符を削除します

    結果 == 5 の場合:

  2. クラスにinitが必要なので、クラスをインスタンス化するときに常に異なる番号を取得します。

    class Dice: '''サイコロを作るクラス'''

        def __init__(self):
            self.number = random.randint(1,6)
    

7 または 5 以外の結果を取得するには、最後に else を追加してみてください。

elif result == '7':
        result == '11'
else:
    print "we got here"

if ステートメントで switch ステートメントをエミュレートしようとしていると思います。あなたがした方法はうまくいきませんが、これを試してください:

def resultgiver():
    if result in [7,11]:
        print('You won! You got ' ,result,'.')

    elif result in [2, 3, 12]:
        print('You lost! You got ' ,result,'.')

    elif result in [5, 6, 8, 9, 10]:
        print('Roll again! You got ' ,result,'.')

    else:
        print "default case for result =", result
于 2013-10-31T20:34:11.143 に答える
1

何がうまくいかないのですか?Pythonで何も印刷されていません

結果が 7、2、または 5 の場合、および何らかの理由でそれが文字列である場合にのみ出力します (文字列に変換しないため、文字列にはなりません)。グローバル スコープで結果を 1 回だけ設定するため、関数を再実行しても何も変わりません。

関数パラメーターについて学習します。数値の結果をパラメーターとして関数に渡します。

于 2013-10-31T20:35:35.583 に答える
0

文字列と整数を比較します!!

if result == '7':

私はこのコードで考える

if result == '7':
    result == '11'
    print('You won! You got ' ,result,'.')

あなたはこれをしたい

if result == 7 or result == 11 :
    print('You won! You got ' ,result,'.')
于 2013-10-31T20:34:26.583 に答える