2013-10-31 78 views
-1

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

为骰子对象创建一个类,该对象可以随机生成一个介于1和6之间的数字并保存该文件。什么问题? Python中没有打印

您需要随机模块和

创建2个骰子对象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() 
+2

尝试为'a'和'b'实例化Dice,例如a = Dice()。另请注意,Dice.number将始终保持不变 - 只在导入时评估随机数。你可能想把它放在\ _ \ _ init _ _ \ _中。 – dbn

回答

1

两个问题:

  1. 你需要在你的类实例括号:

a = Dice()b = Dice()

  1. result是一个整数,但你所有的if语句检查它是否等于char。删除所有的报价在你的数字

    如果结果== 5:

  2. 你需要在你的类一个init,让您始终获得不同数量的,当你实例化类。

    类骰子: '' 'A类,让骰子' ''

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

尝试把一个别人在年底赶上的任何结果,是不是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 
+0

我试过但仍然没有。感谢您的帮助!哦,不要等你改变它,你的答案的第2部分有帮助!非常感谢! – user2800756

+0

检查更新的答案 – jramirez

+0

是的,你说得对! – user2800756

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,'.') 
1

到底哪里出问题了?在Python

没有什么是打印

你只如果结果是7打印任何东西,2,5,出于某种原因,如果它是一个字符串(这是从来没有一个字符串,因为你不把它转换成一个字符串)。您只在全局范围内设置一次结果,因此重新运行该功能不会改变任何内容。

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

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() 
+0

什么时候应该'结果== 2和结果== 3和结果== 4'永远是真的? – glglgl

+0

很简单,打算写结果== 2 **或**结果== 3等,我将编辑我的答案 – Sirac

+0

现在好多了:-) – glglgl