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
My youtube channel

Twitter: @pythonprogrammi - python_pygame

Videos

Speech recognition game

Pygame's Platform Game

Other Pygame's posts