import random
from sympy import isprime
class Unit_seed:
def __init__(self):
self.sign = random.choice(['+', '-', '*', '/'])
if self.sign == '/':
self.right = random.randint(3, 20)
self.left = self.right * random.randint(6, 50)
else:
self.left = random.randint(5, 30)
self.right = random.randint(5, 30)
def show(self):
print(f'{self.left} {self.sign} {self.right}')
def fetch(self):
return [self.left, self.sign, self.right]
class Unit:
def __init__(self, stepdown):
self.stepdown = stepdown # Предыдущий юнит, обработанный функцией fetch
stepup_indices = []
for i in range(len(self.stepdown)):
if type(self.stepdown[i]) == int:
stepup_indices.append(i)
stepup_index = random.choice(stepup_indices)
print(self.stepdown[stepup_index])
if isprime(self.stepdown[stepup_index]):
self.sign = random.choice(['+', '-', '/'])
else:
self.sign = random.choice(['+', '-', '/'])
if self.sign == '/':
self.right = random.randint(3, 20)
self.left = self.stepdown[stepup_index] * self.right
else:
self.left = random.randint(-100, 100)
self.right = self.stepdown[stepup_index] - self.left
if self.left < 0:
self.stepdown = self.stepdown[0:stepup_index] + ['(', self.left, ')', self.sign, self.right] + self.stepdown[stepup_index+1:]
elif self.right < 0:
self.stepdown = self.stepdown[0:stepup_index] + [self.left, self.sign, '(', self.right, ')'] + self.stepdown[stepup_index+1:]
elif self.stepdown[stepup_index-1] in ['*', '/']:
self.stepdown = self.stepdown[0:stepup_index] + ['(', self.left, self.sign, self.right, ')'] + self.stepdown[stepup_index+1:]
else:
self.stepdown = self.stepdown[0:stepup_index] + [self.left, self.sign, self.right] + self.stepdown[stepup_index+1:]
try:
if self.stepdown[stepup_index+1] in ['*', '/'] and self.sign in ['+', '-']:
self.stepdown = self.stepdown[0:stepup_index] + ['(', self.left, self.sign, self.right, ')'] + self.stepdown[stepup_index+1:]
except IndexError:
pass
def show(self):
print(*self.stepdown)
def fetch(self):
return self.stepdown
unit = Unit_seed()
unit.show()
unit1 = Unit(unit.fetch())
unit1.show()
unit2 = Unit(unit1.fetch())
unit2.show()