Python Math 4 – divide in proportion

How to divide a sum among more subjects / objects in proportions to other measurement units.

from random import randrange


class Exercize:
    def __init__(self, amount, quotes):
        self.amount = amount
        self.quotes = quotes

    def solution(self):
        self.cdr = round(self.amount / sum(self.quotes), 0)
        self.workersums = []
        for hours in self.quotes:
            self.workersums.append(hours * self.cdr)
        return self.workersums

    def print_solution(self):
        print(self.workersums)

    def create_exercise(self):
        self.amount = randrange(1000, 10000, 100)
        self.number = randrange(3, 6)
        self.quotes = [randrange(5, 100, 5) for x in range(self.number)]

    def full_work(self, num):
        self.doc = []
        for x in range(num):
            self.create_exercise()

            self.doc.append([
                self.amount,
                self.quotes,
                self.solution()])
        
        for ex in self.doc:
            print(f"Divide this price of {ex[0]} among different employees in proportion to the hours they worked to the project that are listed below:")
            cnt = 0
            for x in ex[1]:
                cnt += 1
                print(f"Worker n. {cnt}:", x)
            print("Solutions: ", [str(n + 1) + ". " + str(x) for n, x in enumerate(ex[2])])
            print()


ex1 = Exercize(1000, [20, 30, 50])
ex1.full_work(10)

Adding some features

In the following code you can create more exercises:

from random import randrange
import os


class Exercize:
    def __init__(self, amount, quotes):
        self.amount = amount
        self.quotes = quotes

    def solution(self):
        self.cdr = round(self.amount / sum(self.quotes), 0)
        self.workersums = []
        for hours in self.quotes:
            self.workersums.append(hours * self.cdr)
        return self.workersums

    def print_solution(self):
        print(self.amount, self.quotes)
        print(self.workersums)

    def create_exercise(self):
        self.amount = randrange(1000, 10000, 100)
        self.number = randrange(3, 6)
        self.quotes = [randrange(5, 100, 5) for x in range(self.number)]

    def full_work(self, num, solution=1):
        self.doc = []
        for x in range(num):
            self.create_exercise()

            self.doc.append([
                self.amount,
                self.quotes,
                self.solution()])
        print(self.doc)
        
        for ex in self.doc:
            print(f"Divide this price of {ex[0]} among different employees in proportion to the hours they worked to the project that are listed below:")
            cnt = 0
            for x in ex[1]:
                cnt += 1
                print(f"Worker n. {cnt}:", x)
            
            if solution:
                print("Solutions: ", [str(n + 1) + ". " + str(x) for n, x in enumerate(ex[2])])
            else:
                with open("solution.txt", "w") as file:
                    text = ""
                    for ex in self.doc:
                        text += "".join(str(ex)) + "\n"
                    file.write(text)
            print()
        if solution == 0:
            os.startfile("solution.txt")



ex1 = Exercize(1000, [20, 30, 50])
# sol = ex1.solution()
# ex1.print_solution()

# ex1.create_exercise()
# ex1.solution()
# ex1.print_solution()
ex1.full_work(10, solution=0)

 

 

github repository


Subscribe to the newsletter for updates
Tkinter templates
Avatar My youtube channel

Twitter: @pythonprogrammi - python_pygame

Videos

Speech recognition game

Pygame's Platform Game

Other Pygame's posts

Published by pythonprogramming

Started with basic on the spectrum, loved javascript in the 90ies and python in the 2000, now I am back with python, still making some javascript stuff when needed.