62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
COLUMN_PADDING = 10
|
|
|
|
class recipe:
|
|
def __init__(self, ingredients, standardPortions):
|
|
self.ingredients = ingredients
|
|
self.standardPortions = standardPortions
|
|
|
|
def toMap(self, portions):
|
|
ratio = portions / self.standardPortions
|
|
result = {'Antall cookies': portions}
|
|
for ingredient in self.ingredients:
|
|
result[ingredient] = self.ingredients[ingredient]*ratio
|
|
return result
|
|
|
|
|
|
cookies = recipe(
|
|
ingredients={
|
|
'sukker(g)': 400,
|
|
'smør(g)': 320,
|
|
'sjokolade(g)': 500,
|
|
'egg': 2,
|
|
'hvetemel(g)': 460
|
|
},
|
|
standardPortions=48,
|
|
)
|
|
|
|
def columnLength(columnElements):
|
|
elementLengths = list(map(lambda element: len(str(element)), columnElements))
|
|
return max(elementLengths) + COLUMN_PADDING
|
|
|
|
# lshift colum by column
|
|
# concatenate columns into rows
|
|
# foreach row print(row)
|
|
|
|
cookieQuestionList = [
|
|
'Hvor mange cookies vil du lage? ',
|
|
'Hvor mange cookies vil du lage nå? ',
|
|
'Hvor mange cookies vil du lage til slutt? '
|
|
]
|
|
cookieNumbers = list(map(lambda question: int(input(question)), cookieQuestionList))
|
|
|
|
# Make recipe maps from every cookie number
|
|
cookieList = list(map(lambda cNum: cookies.toMap(cNum), cookieNumbers))
|
|
# Define columns
|
|
columns = ['Antall cookies', 'sukker(g)', 'sjokolade(g)']
|
|
|
|
rawColumnData = {}
|
|
for column in columns:
|
|
rawColumnData[column] = [column]
|
|
rawColumnData[column].extend(list(map(lambda cookie: cookie[column], cookieList)))
|
|
|
|
columnLengths = dict(map(lambda column: (column[0], columnLength(column[1])), rawColumnData.items()))
|
|
|
|
formattedColumnData = {}
|
|
for column in columns:
|
|
formattedColumnData[column] = []
|
|
for entry in list(rawColumnData[column]):
|
|
remainingSpaces = columnLengths[column]
|
|
formattedColumnData[column].append(str(entry).ljust(remainingSpaces))
|
|
|
|
for row in range(0, len(columns) + 1):
|
|
print(formattedColumnData['Antall cookies'][row] + formattedColumnData['sukker(g)'][row]) |