LINUX.ORG.RU

хочу добавить функцию чтобы сравнить каждый список и использовать self. __init__

 


0

1
class PlateString:

    def __init__(self, threshold=0.05):
        self.threshold = threshold
        self.max_list_from_all_plates = []
        for single_lp in seq:
            max_list = []
            plateresults = []
            for sign in single_lp:
                high_indexes = []
                for prob_id in range(0,len(sign)):
                    if self.threshold<sign[prob_id]:
                        high_indexes.append([sign[prob_id], prob_id, CATEGORIES[prob_id]])
                max_list.append(high_indexes)
            self.max_list_from_all_plates.append(max_list)
            self.listaMain = []

    def makelist(self):
        list1 = []
        list2 = []
        for plate in self.max_list_from_all_plates:
            #maxlen = 0
            #if len(plate) > maxlen:
            #    maxlen = len(plate)
            #if len(plate) == maxlen:
            #    pass
            textPlate : str= ""
            sumplate = 0 
            for probabilities in plate:
                znakMax : str = ""
                probabilityMax : float = 0
                for probability in probabilities:
                    if(probabilityMax<probability[0]):
                        probabilityMax = probability[0]
                        znakMax = probability[2]
                        valMax = probability[0]
                textPlate += znakMax
                sumplate += valMax
            list1.append(textPlate)
            list2.append(sumplate)

        for i in range(len(list1)):
            info = [list1[i], list2[i]]
            self.listaMain.append(info)
        print(self.listaMain)
        self.findtotal()


    def findtotal(self):
        for i in self.listaMain:
            print(i)
            itemmax = (max(i[-1] for i in self.listaMain))
            return (itemmax)

    

if __name__ == '__main__':
    PlateString(threshold=0.05).makelist()
    #PlateString(threshold=0.05).findtotal()

output:

[['JJ788RK', 2.709], ['JJ788RK', 2.601], ['JJ788RK', 2.155], ['JJ788RK', 2.4050000000000002], ['J7J88RK', 2.5060000000000002], ['JJ788RK', 2.5589999999999997], ['JJ788RK', 2.098]]
['JJ788RK', 2.709]


Последнее исправление: katemisik (всего исправлений: 8)

Ответ на: комментарий от Jopich1

ошибку не выдаёт=(

хочу выпринтовать к примеру чтобы работало и был output для проверки print(self.ListaVal, self.ListaMain)

katemisik
() автор топика
Ответ на: комментарий от katemisik

Давай может ты сначала почитаешь что такое класс, что такое экземпляр класса, что такое конструктор и что такое self, а не будешь делать лютую чушь вслепую.

slovazap ★★★★★
()

Лучше объясни словами, что ты делаешь и в чём твоя проблема, а это мракобесие попросту выбрось. Жопича не слушай, он ещё худший мракобес, ничего толкового всё равно не посоветует.

WitcherGeralt ★★
()
Ответ на: комментарий от katemisik

Код не пишут ни по примерам, ни чтобы компилятор заткнулся.

slovazap ★★★★★
()

оформи код как код когда постишь – с подсветкой синтакиса, никто не будет в таком как ты запостил разбираться

Ну и ошибку и в какой строчке она тоже нужно постить

in_dance
()
Ответ на: комментарий от WitcherGeralt

хочу код оформить в функцию, +- так def init(self, threshold=0.05):

как понимаю нужно везде тогда использовать self. ну и еще одну функцию потом def findtotal(self):

Хочу понять как делать такие функции, хотя visual studio ошибку не выдет но код не работает после дописания и self

katemisik
() автор топика
Ответ на: комментарий от katemisik

Хочу понять как делать такие функции

Изучи основы работы с классами в питоне.

gruy ★★★★★
()
Ответ на: комментарий от katemisik

Хочу понять как делать такие функции, хотя visual studio ошибку не выдет но код не работает после дописания и self

Ты объекты-то создаёшь или прям вызываешь PlateString.findtotal(...)?

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

хочу сделать что то вроде: class PlateString: def init(self, threshold=0.05): …. self.findtotal()

def findtotal(self):
    for plate in self.max_list_from_all_plates:
            ...
        print(ListaVal, ListaMain)
katemisik
() автор топика
Ответ на: комментарий от Jopich1

Подскажете в чём дело теперь(почему не работает)?


class PlateString: 
    def __init__(self, threshold=0.05):
        self.max_list_from_all_plates = []
        self.threshold = threshold
        self.max_list = []
        self.maximum_plate_prob = []
        self.possible_plate_prob = []
        self.high_indexes = []
        self.findtotal()


    def findtotal(self, max_list_from_all_plates):
        for single_lp in seq:
            for sign in single_lp:
                for prob_id in range(0,len(sign)):
                    if self.threshold<sign[prob_id]:
                        self.high_indexes.append([sign[prob_id], prob_id, CATEGORIES[prob_id]])
                        self.max_list.append(self.high_indexes)
                    self.max_list_from_all_plates.append(self.max_list)
        print(max_list_from_all_plates)
katemisik
() автор топика

начни с небольшого и работающего кода:

class PlateString:

    def __init__(self, threshold=0.05):
        self.threshold = threshold


    def findtotal(self, max_list_from_all_plates):
        print(self.threshold)
        print(max_list_from_all_plates)


if __name__ == '__main__':

    PlateString(threshold=0.1).findtotal([0.01, 0.08])

scientistpython
()
Ответ на: комментарий от scientistpython

Ваш совет помог) часть кода уже работает, но выдает ошибку name ‘self’ is not defined class PlateString:

def __init__(self, threshold=0.05):
    self.threshold = threshold
    max_list_from_all_plates = []
    #self.threshold = threshold
    for single_lp in seq:
        maximum_plate_prob = []
        possible_plate_prob = []
        max_list = []
        plateresults = []
        for sign in single_lp:
            high_indexes = []
            for prob_id in range(0,len(sign)):
                if self.threshold<sign[prob_id]:
                    high_indexes.append([sign[prob_id], prob_id, CATEGORIES[prob_id]])
            max_list.append(high_indexes)

        max_list_from_all_plates.append(max_list)
        listaMain = []
        ListaVal = []
        self.checklen(max_list_from_all_plates, listaMain, ListaVal, plateresults)


def checklen(self, max_list_from_all_plates, listaMain, ListaVal, plateresults):
        for plate in max_list_from_all_plates:
            maxlen = 0





            if len(plate) > maxlen:


                maxlen = len(plate)
        print(maxlen)


        textPlate : str= ""
        sumplate = 0 
        for probabilities in plate:
            znakMax : str = ""
            probabilityMax : float = 0
            for probability in probabilities:
                if(probabilityMax<probability[0]):
                    probabilityMax = probability[0]
                    znakMax = probability[2]
                    valMax = probability[0]
            textPlate += znakMax
            sumplate += valMax
        listaMain.append(textPlate)
        ListaVal.append(sumplate)




        for i in range(len(listaMain)):
            info = [ListaVal[i], listaMain[i]]
            plateresults.append(info)
                            
        print(plateresults)

if name == ‘main’:

PlateString(threshold=0.05).checklen(self, max_list_from_all_plates, listaMain, ListaVal, plateresults)#ERRROR IS HERE "name 'self' is not defined"
katemisik
() автор топика
Ответ на: комментарий от fernandos

а что Вам не нравиться в моих темах?начинаю более сложные вещи разбирать и нужна помощь, учусь понемногу

katemisik
() автор топика
Ответ на: комментарий от katemisik

а что Вам не нравиться в моих темах

Автор.

начинаю более сложные вещи разбирать и нужна помощь

Не тот форум. Да и обучаемость у вас стремится к нулю.

fernandos ★★★
()
Ответ на: комментарий от katemisik

ну да Вы же тоже все умели да

Нет, но я правильно выбираю профессию и учусь, а не создаю темы на форуме. Ещё и не том форуме. К слову, сколько тем у вас ушло на обучение маркдауна?

родились а в

Голове мозг.

fernandos ★★★
()
Ответ на: комментарий от katemisik

Токсичности? Сами виноваты. Идите на форумы по питону или программированию.

fernandos ★★★
()
Ответ на: комментарий от katemisik

PlateString(threshold=0.05).checklen(self, max_list_from_all_plates, listaMain, ListaVal, plateresults)#ERRROR IS HERE «name ‘self’ is not defined»

Т.е. в теме классов вообще не разбиралась, а просто лепишь наугад? Почитай, что такое self в классах питона.

gruy ★★★★★
()
Ответ на: комментарий от scientistpython

спасибо за Ваш ответ! потихоньку удалось сделать рабочий код

katemisik
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.