0% found this document useful (0 votes)
20 views

Sol B

The document describes a program that displays a graphical representation of dice rolls. It defines functions to roll dice, create a dice font, and display the rolls graphically. It then defines a parser function to take user input for the number of dice and display the output.

Uploaded by

Shahrzad Ahmadi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Sol B

The document describes a program that displays a graphical representation of dice rolls. It defines functions to roll dice, create a dice font, and display the rolls graphically. It then defines a parser function to take user input for the number of dice and display the output.

Uploaded by

Shahrzad Ahmadi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

# ==============================================================================

B2_rilex.py """DICE : display a graphical representation for a list of random dice rolls"""
# ==============================================================================
__author__ = "Christophe Schlick modified by Philippe Blasi"
__version__ = "1.0"
__date__ = "2022-11-12"
__usage__ = """
User input : <number of dice> (must be an integer between 1 and 8)
App output : graphical representation for the provided number of dice rolls"""
# ==============================================================================
from ezCLI import *
from random import randrange
# ------------------------------------------------------------------------------
def roll(n:int) -> int:
"""return a list of 'n' random dice rolls"""
return [1 + randrange(6) for loop in range(n)]
# ------------------------------------------------------------------------------
def dice(rolls:list) -> str:
"""return a graphical representation for a list of random dice rolls"""
# first create the dice font as a single string with 5 lines of 60 characters
font = """
•••••••••:•••••••••:•••••••••:•••••••••:•••••••••:•••••••••
• •:• • •:• • •:• • • •:• • • •:• • • •
• • •:• •:• • •:• •:• • •:• • • •
• •:• • •:• • •:• • • •:• • • •:• • • •
•••••••••:•••••••••:•••••••••:•••••••••:•••••••••:•••••••••
"""
# then convert font into a 5x6 matrix by splitting string at '\n' and at ':'
font = [line.split(':') for line in font.strip().split('\n')]
# for each line, extract the chars of the current digit from the font matrix
lines = [[line[roll-1] for roll in rolls] for line in font]
B3_numlines.py # and finally, join everything as a multi-line string
return '\n'.join(' '.join(line) for line in lines)
# ------------------------------------------------------------------------------
def parser(command:str) -> str:
"""parse 'command' and return the graphical representation for dice rolls"""
n = convert(command)
assert type(n) is int and 0<n<9, "number must be an integer between 1 and 8"
return dice(roll(n)) # roll 'n' dice and return its graphical representation
# ==============================================================================
if __name__ == '__main__':
userloop(parser, "Enter number of dice")
# ==============================================================================
B5_fiboplus.py

B4_dice.py
SOL-B - 1 - 2024/03/24 11:03
def fibo(n:int, u:int, v:int) -> int: # parse 'command' and use default values for missing arguments
"""compute the nth term of the Fibonacci sequence starting from (u,v)""" args = parse(command, default); #inspect()
a, b = u, v # store all values from dictionary 'args' into variables
for p in range(n): n, u, v, file = (args[name] for name in ('n','u','v','file')); #inspect()
a, b = b, a+b assert type(n) is int and n >= 0, "<n> must be a positive integer"
return a assert type(u) is int, "<u> must be an integer"
# ------------------------------------------------------------------------------ assert type(v) is int, "<v> must be an integer"
def fibos(n:int, u:int, v:int) -> str: assert type(file) is str, "<filename> must be a string"
"""return the 'n' first terms of the Fibonacci starting from (u,v)""" if not file: return fibos(n, u, v) # show result on screen
return '\n'.join(["fibo(%s) = %s" % (p, fibo(p,u,v)) for p in range(n+1)]) write_txt(file, fibos(n, u, v)) # write result in 'file'
# ------------------------------------------------------------------------------ return f"Fibonacci sequence ({n} values) written in file '{file}'"
def parser(command:str) -> str: # ==============================================================================
"""parse 'command' and return Fibonacci sequence of provided arguments""" if __name__ == '__main__':
default = 'n=10 u=0 v=1 file=' # default values for all arguments userloop(parser)
# parse 'command' and use default values for missing arguments # ==============================================================================
args = parse(command, default); #inspect()
# store all values from dictionary 'args' into variables
B5B_fiboplus.py
n, u, v, file = (args[name] for name in ('n','u','v','file')); #inspect()
assert type(n) is int and n >= 0, "%r : invalid value for 'n'" % n
assert type(u) is int, "%r : invalid value for 'u'" % u
assert type(v) is int, "%r : invalid value for 'v'" % v
assert type(file) is str, "%r : invalid filename" % file
if not file: return fibos(n, u, v) # show result on screen
write_txt(file, fibos(n, u, v)) # write result in 'file'
return "Fibonacci sequence (%s values) written in file %r" % (n, file)
# ==============================================================================
if __name__ == '__main__':
userloop(parser)
# ==============================================================================
B5A_fiboplus.py

SOL-B - 2 - 2024/03/24 11:03


# ==============================================================================
B1_count.py

SOL-B - 3 - 2024/03/24 11:03

You might also like