# RPG Dice Roller

This is sort of a follow up to my post yesterday. I'm a relative newbie to Python and before I made a d20 dice roller for RPGs. Now I've made a dice roller for any type of dice, and I would love some feedback on this code.

from random import randint

def roll(sides, number_of_dice):
"""Rolls Dice."""
return [randint(1, sides) for i in range(num_of_dice)]

prompt = """
Would you like to roll the same combination of dice {}?
Please type 'yes', 'no', or 'quit'
"""

# Main Program

print """
Hello {} and welcome to an RPG Dice Roller by Ray Weiss.
Please type quit when prompted to exit or use CNTRL-C.
Thanks to everyone at Stack Overflow etc. for the help.
""".format(name)

sides = input("\nHow many sides do you want on your dice? > ")
num_of_dice = input("\nHow many {} sided dice do you want to roll? >".format(sides))
results = roll(sides, num_of_dice)
print results

roll_again = raw_input(prompt.format(name))

while True:

if roll_again == "yes":
results = roll(sides, num_of_dice)
print results
roll_again = raw_input(prompt.format(name))

if roll_again == "no":
sides = input("How many sides do you want on your dice? > ")
num_of_dice = input("\nHow many {} sided dice do you want to roll? >".format(sides))
results = roll(sides, num_of_dice)
print results
roll_again = raw_input(prompt.format(name))

if roll_again == "quit":
print """
Thank you {} for using this RPG Dice Roller by Ray Weiss! Goodbye!
""".format(name)
break


• What happens if the user enters "rabbit" sides? -> This value in any case needs to be transformed to an int for roll to work correctly otherwise a TypeError will be thrown. int("rabbit") will throw a ValueError (see last item)
• Similarly, num_of_dice also have to be validated as a positive integer (non-zero).
• If the user enters something wrong for roll_again (say, "of course!"), you'll enter an infinite loop - The question probably needs to be brought inside the loop.
• You'll want to use raw_input rather than input in python2. Input evaluates an expression, which does what you want here (enter a number, get an int back (unless of course it's a float!)), but should be regarded as avoid if at all possible.