Есть ли способ сложить случайные значения и распечатать их? - PullRequest
0 голосов
/ 28 мая 2020

Случайное значение, очевидно, необходимо, но оно затрудняет сбор значений. =) Это ненужный комментарий.

import random
class Die:
    def __init__ (self, face, face_value):
        self.face = face
        self.face_value = face_value
    def roll(self):

Я пытался заставить класс сделать это дважды, но по какой-то причине это не сработало.

        self.face = random.randint(1, 6)
        if self.face == 1:
            face = ( ' ------\n|       |\n|   o   |\n|       |\n ------')
            num = 1
        elif self.face == 2:
            face =  (' ------\n|       |\n| o   o |\n|       |\n ------')
            num = 2
        elif self.face == 3:
             face =  (' ------\n|   o   |\n|   o   |\n|   o   |\n ------')
            num = 3
        elif self.face == 4:
            face =  (' ------\n| o   o |\n| o   o |\n|       |\n ------')
            num = 4
        elif self.face == 5:
            face =  (' ------\n| o   o |\n| o   o |\n|   o   |\n ------')
            num = 5
        elif self.face == 6:
            face = (' ------\n| o   o |\n| o   o |\n| o   o |\n ------' )
            num = 6
        return print(face)
 **My goal is to add up the two random values that I get from the Die class, I have tried to put two rolls in that class, but then it has the same output still. **   
from DieClass import Die
user = input('Do you want to play this Dicegame?')
num = random.randint(1,6)

Мне нужно это число только для того, чтобы у меня было какое-то значение для включения в класс.

if num == 1:
    face = ( ' ------\n|       |\n|   o   |\n|       |\n ------')
elif num == 2:
    face =  (' ------\n|       |\n| o   o |\n|       |\n ------')
elif num == 3:
    face =  (' ------\n|   o   |\n|   o   |\n|   o   |\n ------')
elif num == 4:
    face =  (' ------\n| o   o |\n| o   o |\n|       |\n ------')
elif num == 5:
    face =  (' ------\n| o   o |\n| o   o |\n|   o   |\n ------')
elif num == 6:
    face = (' ------\n| o   o |\n| o   o |\n| o   o |\n ------' )


class Dicegame(Die):
    def __init__ (self, name):
        self.name = name

    def play(self):
        Die1 = Die(face, num)
        return Die1.roll()

Я пытаюсь сделать этот код более эффективным, если у вас есть предложения подскажите

if user == 'yes' or 'yep' or 'y' or 'Yes' or 'YES!' or 'YES' or 'Yurp' or 'Yeppers' or 
'si'or'1':
    while user != 5:
        user = input('Press 1 to roll, 2 to quit.')
        if user == '1':
            Dice1 = Dicegame('name')
            Dice1.play()
            Dice2 = Dicegame('bob')
            Dice2.play()
            print('')
            print('Thanks for playing!')
            print('')
        elif user == '2':
            print('Thanks for playing!')
            print('')
            exit()

Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Словарь подстановки значительно упростит код.

import random

FACES = {
    1: " ------\n|       |\n|   o   |\n|       |\n ------",
    2: " ------\n|       |\n| o   o |\n|       |\n ------",
    3: " ------\n|   o   |\n|   o   |\n|   o   |\n ------",
    4: " ------\n| o   o |\n| o   o |\n|       |\n ------",
    5: " ------\n| o   o |\n| o   o |\n|   o   |\n ------",
    6: " ------\n| o   o |\n| o   o |\n| o   o |\n ------",
}

YES_REPLIES = {
    'yes', 'yep', 'y', 'Yes', 'YES!', 'YES', 'Yurp', 'Yeppers', 'si', '1'
}


class Die:
    def __init__(self, face, face_value):
        self.face = face
        self.face_value = face_value

    def roll(self):
        num = self.face = random.randint(1, 6)
        face = FACES[num]
        print(face)
        return num


class Dicegame(Die):
    def __init__(self, name):
        self.name = name

    def play(self):
        num = random.randint(1, 6)
        face = FACES[num]

        Die1 = Die(face, num)
        return Die1.roll()


user = input('Do you want to play this Dicegame? ')
if user in YES_REPLIES:
    while True:
        user = input('Press 1 to roll, 2 to quit. ')
        if user == '1':
            Dice1 = Dicegame('name')
            a = Dice1.play()
            Dice2 = Dicegame('bob')
            b = Dice2.play()
            print(f'Your total is {a+b}')
            print('Thanks for playing!')
            print('')
        elif user == '2':
            print('Thanks for playing!')
            print('')
            break

0 голосов
/ 28 мая 2020

Ваша строка user == 'yes' or 'yep' or 'y' ... всегда будет возвращать True, потому что or является параметром с низким приоритетом, а логическое значение непустой строки - True.

Я пытался очистить ваш код немного вверх, вот что у меня есть

import random

class Die:
    def __init__ (self, face, face_value):
        self.face = face
        self.face_value = face_value
    def roll(self):
        self.face = random.randint(1, 6)
        if self.face == 1:
            face = ( ' ------\n|       |\n|   o   |\n|       |\n ------')
            num = 1
        elif self.face == 2:
            face =  (' ------\n|       |\n| o   o |\n|       |\n ------')
            num = 2
        elif self.face == 3:
            face =  (' ------\n|   o   |\n|   o   |\n|   o   |\n ------')
            num = 3
        elif self.face == 4:
            face =  (' ------\n| o   o |\n| o   o |\n|       |\n ------')
            num = 4
        elif self.face == 5:
            face =  (' ------\n| o   o |\n| o   o |\n|   o   |\n ------')
            num = 5
        elif self.face == 6:
            face = (' ------\n| o   o |\n| o   o |\n| o   o |\n ------' )
            num = 6
        print(face)
        return num

user = input('Do you want to play this Dicegame? ')

num = random.randint(1, 6)
if num == 1:
    face = ( ' ------\n|       |\n|   o   |\n|       |\n ------')
elif num == 2:
    face =  (' ------\n|       |\n| o   o |\n|       |\n ------')
elif num == 3:
    face =  (' ------\n|   o   |\n|   o   |\n|   o   |\n ------')
elif num == 4:
    face =  (' ------\n| o   o |\n| o   o |\n|       |\n ------')
elif num == 5:
    face =  (' ------\n| o   o |\n| o   o |\n|   o   |\n ------')
elif num == 6:
    face = (' ------\n| o   o |\n| o   o |\n| o   o |\n ------' )

class Dicegame(Die):
    def __init__ (self, name):
        self.name = name

    def play(self):
        Die1 = Die(face, num)
        return Die1.roll()

if user in ('yes', 'yep', 'y', 'Yes', 'YES!', 'YES', 'Yurp', 'Yeppers', 'si', '1'):
    while user != '5': # what is the purpose of this line?
        user = input('Press 1 to roll, 2 to quit. ')
        if user == '1':
            Dice1 = Dicegame('name')
            a = Dice1.play()
            Dice2 = Dicegame('bob')
            b = Dice2.play()
            print(f'Your total is {a+b}')
            print('Thanks for playing!')
            print('')
        elif user == '2':
            print('Thanks for playing!')
            print('')
            exit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...