	

    #!/usr/bin/python3
    # Dice simulator. Project for http://redd.it/2aaeou
    # author: wukaem
     
    import random
     
    DICE_SEGMENTS = {
        0: '   .-------.',
        1: '   |       |',
        2: '   |   O   |',
        3: '   |     O |',
        4: '   | O     |',
        5: '   | O   O |',
        6: '   | O O O |',
        7: "   '-------'",
    }
     
    SIDE_REPR = (
        (0, 1, 2, 1, 7),
        (0, 3, 1, 4, 7),
        (0, 4, 2, 3, 7),
        (0, 5, 1, 5, 7),
        (0, 5, 2, 5, 7),
        (0, 6, 1, 6, 7),
    )
     
     
    def dice_img_lst(side):
        img_lst = []
        for segment_num in SIDE_REPR[side-1]:
            img_lst.append(DICE_SEGMENTS[segment_num])
        return img_lst
     
     
    def roll_dice(num):
        return [random.randint(1, 6) for _ in range(num)]
     
     
    def dice_image(dice_lst):
        dice_lst_img = []
        for side in dice_lst:
            dice_lst_img.append(dice_img_lst(side))
        rows = []
        for i in range(5):
            rows.append(''.join(segment[i] for segment in dice_lst_img))
        return '\n'.join(rows)
     
     
    def ask_question1():
        print('\nHow many dice do you want to roll? (1-5)')
        while True:
            ans = input('> ')
            try:
                ans = int(ans)
            except ValueError:
                print('\nGive me a number. Try again.')
                continue
            if ans in range(1, 6):
                return ans
            print('\nRoll at least 1 dice and no more than 5. Try again.')
     
     
    def ask_question2(num):
        question = ("Type 'q' to quit, 'c' to change number of dice,\n"
                    "or hit <Enter> to roll {} dice again.".format(num))
        print(question)
        new_num = 0
        while not new_num:
            ans = input('> ')
            if ans == '':
                new_num = num
            elif ans.lower()[0] not in ('q', 'c'):
                print('Wrong answer.\n')
                print(question)
                continue
            elif ans.lower()[0] == 'q':
                new_num = -1
            else:
                new_num = ask_question1()
        return new_num
     
     
    def main():
        print('\n       Welcome to DICE SIMULATOR')
        no_dice = ask_question1()
        while no_dice != -1:
            print('\n   Rolling {} dice:\n'.format(no_dice))
            dice_list = roll_dice(no_dice)
            print(dice_image(dice_list))
            print('\n   Total: {}\n'.format(sum(dice_list)))
            no_dice = ask_question2(no_dice)
        print('Goodbye!')
     
     
    if __name__ == "__main__": main()

