2016-10-14 4 views
0

Попытка бросить кубики, как в подземельях и драконах, но отобразить каждый рулон. Я не знаю, что я делаю неправильно и ценю всю помощь.D & D dice roll python

from random import randint 
def d(y): #basic die roll 
    return randint(1, y) 
def die(x, y): #multiple die roll 2d20 could roll 13 and 7 being 20 
    for [x*d(y)]: 
     print (sum(int(y))) 

print (die(3, 20)) 

нормально, так что я взял совет и изменил его, но все еще ПОЛУЧАТЬ ошибку на моей обратной линии

# 
#trying to roll dice like in dungeons and dragon but display each roll 
from random import randint 
def d(sides): 
    return randint(1, sides) 
def roll(n, sides): 
    return tuple(d(sides) for _ in range(n)) 
def dice(n, sides): 
    print (roll(n, sides)) 
    return sum(dice) 
print(dice(3,20)) 
+4

Можете ли вы объяснить, что вы пытаетесь сделать с этой строки: 'для [х * d (у)]:'. Это недопустимый синтаксис. – idjaw

+0

, как 2 * d (20), катит число betwwn 2 и 40, но я не могу видеть, какие числа вошли в него. –

+0

'dice' - это функция, которую вы не можете суммировать' dice'. Вам нужно зафиксировать возврат 'roll (n, sides)' в качестве переменной, например. 'x = roll (n, стороны); печать (х); return sum (x) '. Однако мне особенно не нравится эффект «print». – AChampion

ответ

1

Вы можете не только множественный результат одного вызова d(), что вам нужно сделать n различные вызовы к d():

from random import randint 

def d(sides): 
    return randint(1, sides) 

def roll(n, sides): 
    return tuple(d(sides) for _ in range(n)) 

dice = roll(3, 20) 
print(dice, sum(dice)) 
# (20, 18, 1) 39 
+0

ОК, поэтому я принял ваш совет, но я схожу с места, чтобы сделать кубики классом, поэтому я могу написать print (кости (3,20)) и упростить мою морщинку, так как я получил # # #trying to roll dice например, в подземельях и драконах, но показывать каждый рулон от случайного импорта randint def d (стороны): return randint (1, стороны) def roll (n, sides): возврат кортежа (d (сторон) для _ в диапазоне (n)) def кости (n, боковые): печать (roll (n, боковые)) возвращение сумма (кости) печать (кости (3,20)) –