1

(4 відповідей, залишених у Python)

Дякую! Сьогодні ввечері спробую імплементувати. Це учбова задача де треба змоделювати структуру простору імен з можливістю додавати простір у відповідний, а також знаходити ім'я простору де знаходиться змінна. Питання в тому, щоби не перевіряти команди користувача, а автоматично підставляти їх як метод класу.

2

(4 відповідей, залишених у Python)

Привіт! Чи можливо прописати метод у неявному вигляді?

Наприклад є клас:

class Space(object):
    def __init__(self, Namespace, Vars):
        self.Namespace = Namespace
        self.Vars = Vars
    def add(self):
        print('Oh, no!')
    def get(self):
        print('HURA')
    def create(self):
        print('Strange')

Потім я створюю екземляр класу і звертаюсь до одного з його методів.

a = Space("Temp", [])
b = list(map(str, input().split()))
a.get()

Але чи можливо взяти його зі списку b, На кшалт

a.b[0]()

Дякую!

3

(7 відповідей, залишених у *Basic)

koala написав:

Взагалі було б непогано зрозуміти, що саме вам потрібно - чому VBS і чому rtf.

Не хотів "перевантажувати", але із задоволенням розповім. Я працюю в оболонці статистичного програмування, яка генерує word документи у форматі rtf. Документи містять колонки, які можуть у свою чергу містити текст, який треба переносити на наступну строчку. І все було б непогано, але pagination задається для таких документів вручну, тобто треба розуміти скільки строчок буде займати кожен запис таблиці, яка власне виводиться "на друк". Часто це просто, бо записи майже однакові, часто можно плюс-мінус зрозуміти за якої довжини відбудеться перенос. Але коли у вас 600-700 сторінок, то важко, бо якщо "летить" одна сторінка, то летять і наступні. Розв'язок: має бути код. який мав би підказати скільки пікселів потенційно використає один запис у кожній клітинці таблички.

Дякую за допомогу!

4

(7 відповідей, залишених у *Basic)

koala написав:

Запустити за допомогою VBS VBA і вже там прочитати.

Можете підказати код або книжку?

5

(7 відповідей, залишених у *Basic)

Підкажіть, будь ласка, як прочитати ширину колонок rtf документа. За домопогою VBS. Дякую!

6

(1 відповідей, залишених у Обговорення)

Підкажіть, будь ласка, в якому розділі можна задати питання з VBS.

Дякую!

koala написав:

В MS Office є вбудований Basic із записом макросів. Запишіть зміну ширини і подивіться, що відбувається в коді.

Ви не могли б про це детальніше написати? Можна це робити за допомогою Visual Basic?

8

(30 відповідей, залишених у Інше)

Це все так. Тому що там кожен день виходять на чергування крім звічайної полиції офіцери замасковані під безхатьків, маргіналів и гопніків. Нам би так.

Доброго дня!

Підкажіть, пліз, як можна програмно (знаю Python більш-менш, але можна і інші мови) визначити у rtf документі кількість колонок у таблиці та ширину кожної колонки у символах.

Дякую!

10

(0 відповідей, залишених у Python)

# Будь ласка, видаліть тему

11

(0 відповідей, залишених у Робота)

Акцент на ООП. В рамках підготовки до заліку. Будь ласка, пишіть в особисте. Дякую.

12

(9 відповідей, залишених у Python)

# update - друк бінарного дерева

class MyBTree(object):
    class Item(object):
        def __init__(self, data: int):
            self.left = None
            self.right = None
            self.data = data

    def __init__(self):
        self.root = None

    def is_empty(self):
        return self.root is None

    def insert(self, data):
        item = MyBTree.Item(data)
        if not self.root:
            self.root = item
        else:
            current_item = self.root
            while True:
                if current_item.data <= item.data:
                    if current_item.right is None:
                        current_item.right = item
                        return
                    else:
                        current_item = current_item.right
                else:
                    if current_item.left is None:
                        current_item.left = item
                        return
                    else:
                        current_item = current_item.left

    def _print_subtree(self, sub_item: Item):
        """ Comment """
        # 1. Check self.left
        if sub_item.left:
            self._print_subtree(sub_item.left)
        # 2. Print self.data
        print(sub_item.data)
        # 3. Check self.right
        if sub_item.right:
            self._print_subtree(sub_item.right)

    def print(self):
        self._print_subtree(self.root)

і код з друком:

import random

from my_btree import MyBTree as BTree


def fill_tree(btree: BTree):
    for i in range(10):
        data = random.randint(1, 101)
        btree.insert(data)
        print(data)


def main():
    the_tree = BTree()
    print('Fill tree')
    fill_tree(the_tree)
    print('Print tree')
    the_tree.print()

13

(9 відповідей, залишених у Python)

koala написав:
def print(self):
  if self.left:
    self.left.print()
  print(value)
  if self.right:
    self.right.print()

Не можу розібратись як користуватись цією функцією. Можете вписати в мій код? Дякую.

14

(9 відповідей, залишених у Python)

Переписав бінарне дерево наступним чином:

class MyBTree(object):
    class Item(object):
        def __init__(self, data: int):
            self.left = None
            self.right = None
            self.data = data

    def __init__(self):
        self.root = None

    def is_empty(self):
        return self.root is None

    def insert(self, data):
        item = MyBTree.Item(data)
        if not self.root:
            self.root = item
        else:
            current_item = self.root
            while True:
                if current_item.data <= item.data:
                    if current_item.right is None:
                        current_item.right = item
                        return
                    else:
                        current_item = current_item.right
                else:
                    if current_item.left is None:
                        current_item.left = item
                        return
                    else:
                        current_item = current_item.left

    def print(self):
        self.root
        pass

Так воно заповнюється:

def fill_tree(btree: BTree):
    for i in range(10):
        data = random.randint(1, 101)
        btree.insert(data)
        print(data)


the_tree = BTree()
fill_tree(the_tree)

Підкажіть, будь ласка, як його роздрукувати у вигляді чисел від найменьшого до найбільшого. Тобто треба рекурсивно пройти по гілках від лівої сторони до правої. Але як? Почав писати метод print і затупив). Дякую!

15

(11 відповідей, залишених у Python)

Є два російськомовних курси: https://stepik.org/course/67 та https://stepik.org/course/512.

16

(9 відповідей, залишених у Python)

Доброго дня!

Допоможіть, будь ласка, розібратись з бінарним деревом. Дан клас, який його реалізує. Стоїть задача: Вивести дерево на екран Print(t) з відображенням структури. Але як його взагалі ввести?

classBtree:
    '''Реалізує бінарне дерево.
    ''' def__init__(self):
        '''Створити порожнє дерево.
        '''
        self._data =None    #навантаження кореня дерева
        self._ls =None        #лівий син
        self._rs =None         #правий син

    def isempty(self):
        '''Чипорожнєдерево?.
         '''
         returnself._data ==None and self._ls ==None and self._rs ==None

    def maketree(self, data, t1, t2):
        '''Створити дерево.
          Дані у корені - data, лівий син -t1, правий син - t2
        '''
        self._data = data
        self._ls = t1
        self._rs = t2

    def root(self):
        '''Корінь дерева.
        '''
        if self.isempty():
            print('root: Деревопорожнє')
            exit(1)
        return self._data

    def leftson(self):
        '''Лівий син.
        '''
        if self.isempty():
            t = self
        else:
            t = self._ls
        return t

    def rightson(self):
        '''Правий син.
        '''
        if self.isempty():
            t = self
        else:
            t = self._rs
        return t

    def updateroot(self, data):
        '''Змінити корінь значенням data.
        '''
        if self.isempty():    #якщо дерево порожнє, додати лівого та правого сина
            self._ls = Btree()
            self._rs = Btree()
        self._data = data

    def updateleft(self, t):
        '''Змінити лівого сина значенням t.
        '''
        self._ls = t

    def updateright(self, t):
        '''Змінити правого сина значенням t.
        '''
        self._rs = t 

17

(3 відповідей, залишених у Python)

Нормальний хід ). Дали на екзамен фундаментальну задачу ))), щоб я її за 45 хвилин розв язав ). Типу молодий Ейлер.

Правда, наприкінці зауважили, що пересадка буде тільки одна )), максимум дві ).

Як треба змінити код, щоби враховувало одну пересадку.

На вході, наприклад:

1,A,B,100
2,B,C,75
3,A,D,175
4,B,D,50

Треба знайти

A,D

Доброго дня!

Є задача визначити чи існує маршрут між містами. І друга частина - якщо існує декілька. то вибрати оптимальний.

Дойшов тільки ось до чого:

# Пошук маршруту


def base_of_ways(oneway = []):
    global n,base,towns
    n = int(input('Введіть кількість маршрутів '))
    base = {}
    for i in range (0, n):
        t = str(input('Введіть дані маршруту №{} через кому у вигляді: Номер автобусу, Місто відправлення, Місто прибуття, Вартість : '.format(i+1))).split(',')
        oneway.append(t)
        base[int(oneway[i][0])] = [oneway[i][1],oneway[i][2],int(oneway[i][3])]
    return base

def way_check(T=False,TH=False,initial='',final='',route=[],routes={},Cost=0):
    towns = list(str(input('Введіть Ваш маршрут у вигляді: <з якого міста>,<в яке місто>: ')).split(','))
    initial = towns[0]
    final = towns[1]
    for i in base:
        if (base[i][0] == towns[0] or base[i][0] == initial) and base[i][1] == final:
            T = True
            Cost+=base[i][2] 
        elif base[i][0] == towns[0] and base[i][1] != towns[1]:
            towns[0] = base[i][1]
            Cost+=base[i][2]
    if T:
        print('Можна дістатись із міста {} в місто {}. Вартість {}.'.format(initial,final,Cost))
    else:
        print('Не можна дістатись із міста {} в місто {}.'.format(initial,final))
    return T

base_of_ways()
print(base)
way_check()

Розумію, що має бути якийсь рекурсивний алгоритм і необхідно визначити всі можливі шляхи в вигляді списків. Але що робити далі і чи обов язкова рекурсія?

Буду вдячний за пораду!

19

(8 відповідей, залишених у Python)

В моєму розумінні "оптимізувати" це зменьшити кількість літер у коді. Я на цьому етапі ).

20

(8 відповідей, залишених у Python)

Доброго дня!

Є задача для опанування підпрограм:
https://replace.org.ua/extensions/om_images/img/5ab7f9fec24da/1.jpg

Написав наступний код:

import random
import math

n = int(input('Введіть кількість елементів послідовності '))
max = int(input('Введіть максимальне натуральне число послідовності '))
X = random.sample(range(1, max), n)

print(X)

def issqr(val):
    if int(val**0.5) == val**0.5:
        return True
    else:
        return False

def islog(val):
    if int(math.log(val,5)) == math.log(val,5):
        return True
    else:
        return False

def isprime(val):
    val = abs(int(val))
    if val < 2:
        return False
    if val == 2:
        return True
    if not val & 1:
        return False
    for x in range(3, int(val**0.5)+1, 2):
        if val % x == 0:
            return False
    return True

def check_value(i):
    if issqr(i):
        print(i,'є квадратом числа',int(i**0.5))
    if islog(i):
        print(i,'є ступенем числа 5: 5^',math.log(i,5))
    if isprime(i):
        print(i,'є простим числом')

for i in range(0,len(X)):
    check_value(X[i])

Будь ласка, підкажіть як можна оптимізувати код, але залишити підпрограми.