2016-09-18 1 views
1

Mon programme est supposé simuler à la fois simuler le rôle d'un seul dé et le rôle de deux dés mais j'ai des problèmes. Voici ce que mon code ressemble à:Programme Python utilisant des programmes de classe pour simuler le jet de deux dés

import random 

#Dice class simulates both a single and two dice being rolled 
#sideup data attribute with 'one' 

class Dice: 
    #sideup data attribute with 'one' 

    def __init__(self): 
     self.sideup='one' 
    def __init__(self): 
     self.twosides='one and two' 

#the toss method generates a random number 
#in the range of 1 through 6. 


    def toss(self): 
     if random.randint(1,6)==1: 
      self.sideup='one' 
     elif random.randint(1,6)==2: 
      self.sideup='two' 
     elif random.randint(1,6)==3: 
      self.sideup='three' 
     elif random.randint(1,6)==4: 
      self.sideup='four' 
     elif random.randint(1,6)==5: 
      self.sideup='five' 
     else: 
      self.sideup='six' 
    def get_sideup(self): 
     return self.sideup 
    def doubletoss(self): 
     if random.randint(1,6)==1 and random.randint(1,6)==2: 
      self.twosides='one and two' 
     elif random.randint(1,6)==1 and random.randint(1,6)==3: 
      self.twosides='one and three' 
     elif random.randint(1,6)==1 and random.randint(1,6)==4: 
      self.twosides='one and four' 
     elif random.randint(1,6)==1 and random.randint(1,6)==5: 
      self.twosides='one and five' 
     elif random.randint(1,6)==1 and random.randint(1,6)==6: 
      self.twosides='one and six' 
     elif random.randint(1,6)==1 and random.randint(1,6)==1: 
      self.twosides='one and one' 
    def get_twosides(self): 
     return self.twosides 






#main function 
def main(): 
    #create an object from the Dice class 
    my_dice=Dice() 


    #Display the siide of the dice is factory 
    print('This side is up',my_dice.get_sideup()) 

    #toss the dice 
    print('I am tossing the dice') 
    my_dice.toss() 

    #toss two dice 
    print('I am tossing two die') 
    my_dice.doubletoss() 

    #Display the side of the dice that is facing up 
    print('this side is up:',my_dice.get_sideup()) 

    #display both dices with the sides of the dice up 
    print('the sides of the two dice face up are:',my_dice.get_twosides()) 



main() 

Voici la sortie de mon programme quand je le lance:

"Traceback (most recent call last): File "C:/Users/Pentazoid/Desktop/PythonPrograms/DiceClass.py", line 79, in main() File "C:/Users/Pentazoid/Desktop/PythonPrograms/DiceClass.py", line 61, in main print('This side is up',my_dice.get_sideup()) File "C:/Users/Pentazoid/Desktop/PythonPrograms/DiceClass.py", line 32, in get_sideup return self.sideup

AttributeError: 'Dice' object has no attribute 'sideup'

Qu'est-ce que je fais mal?

+0

Rappelez vous. Accepter les bonnes réponses est considéré comme poli sur SO. Chaque demandeur peut accepter une réponse sous sa question malgré sa réputation (ce n'est pas la même chose que l'upvoting). Vous avez une case à cocher sous les boutons de vote de la réponse. –

Répondre

4

Vous avez deux méthodes init. La seconde remplace la première, ce qui nie votre définition de sideup.

changement:

def __init__(self): 
    self.sideup='one' 
    self.twosides='one and two'