-1

我的任务是在 Python 3.3.2 中,它在这里:

为 dice 对象创建一个类,该类可以随机生成 1 到 6 之间的数字并保存文件。

您将需要随机模块和

创建 2 个 Dice 对象 a 和 b 并将它们的值相加。

这是规则

赢 = 总数等于 7 或 11

输 = 总分等于 2,3 或 12

再次掷骰 = 总数等于 5,6,8,9,10,直到掷出 7 或再次掷出相同的数字。


现在我写的代码:

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

几个问题:

  1. 你需要在你的类实例周围加上括号:

a = Dice()b = Dice()

  1. result是一个整数,但你所有的 if 语句都会检查它是否等于一个字符。删除数字周围的所有引号

    如果结果 == 5:

  2. 你需要一个 init 在你的类中,所以当你实例化类时你总是得到一个不同的数字。

    class Dice: '''制作骰子的类'''

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

尝试在末尾添加 else 以捕获任何不是 7 或 5 的结果:

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,并且由于某种原因它是字符串(并且它永远不是字符串,因为您没有将其转换为字符串),您只会打印任何内容。您只需在全局范围内设置一次结果,因此重新运行该函数不会改变任何内容。

了解函数参数。您想将数字结果作为参数传递给您的函数。

于 2013-10-31T20:35:35.583 回答
1

你应该写

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

等检查两个或多个条件。a.number 也总是等于 b.number,因为你只给 Dice.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 回答
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 回答