Dice Roller — 364[Easy]
Simple challenge today, The goal is to create a dice rolling script. I decided to make it command line argument driven, so I had to import sys
I imported random, as I do not know how to create pseudo random numbers properly.
Last, but probably the most important, I have imported re for regular expressions. This is needed to validate input, as I need to make sure it’s any amount of numbers, followed by a “d” and another set of numbers.
Short rundown of what the script does.
- Check command line arguments, if only 1 (the script name) display help text
- Loop through all provided arguments. If the argument passes the regex validation continue to the roll
- Split the string on the “d” character to get your faces and how many dice there are.
- Start a running total, and randomly get a number for how many faces the die has, and add them to that total
- Repeat for how many dice you have and print the result.
Here is the code I came up with:
import re import sys import random def Roll(inStr): l = inStr.split("d") howMany = l faces = l i=0 total = 0 while i < int(howMany): total += random.randint(1, int(faces)) i += 1 print str(inStr) + " :: " + str(total) if __name__ == "__main__": if(len(sys.argv) == 1): print "Example: 3d6 to roll 3x 6 sided dice" else: p = re.compile("\d*d\d*") for r in sys.argv[1:]: if(p.match(str(r.lower()))): Roll(r.lower()) else: print "invalid input: " + str(r)