Форум сайта python.su
Подскажите пожалуйста как сделать это более компактным) Только начал изучить парсинг и хочу как-то это сократить)
# Берет самый последний год в отчете организации на которую дал ссылку # Например эта организация выставила отчет в 2021 году последний раз self.label_20.setText(year1 := list(data)[10]) # 2021 self.label_21.setText(year2 := list(data)[9]) #2020 self.label_22.setText(year3 := list(data)[8]) #2019 self.label_23.setText(year4 := list(data)[7]) #2018 self.label_24.setText(year5 := list(data)[6]) #2017 # 1200, 1500, 1250 - строки бух. баланса #Коэффициент текущей ликвидности self.label_26.setText("{:.2f}".format(data[year1]['values']['1200']/data[year1]['values']['1500'])) self.label_27.setText("{:.2f}".format(data[year2]['values']['1200']/data[year2]['values']['1500'])) self.label_28.setText("{:.2f}".format(data[year3]['values']['1200']/data[year3]['values']['1500'])) self.label_29.setText("{:.2f}".format(data[year4]['values']['1200']/data[year4]['values']['1500'])) self.label_30.setText("{:.2f}".format(data[year5]['values']['1200']/data[year5]['values']['1500'])) #Коэффициент абсолютной ликвидности self.label_32.setText("{:.2f}".format(data[year1]['values']['1250'] / data[year1]['values']['1500'])) self.label_33.setText("{:.2f}".format(data[year2]['values']['1250'] / data[year2]['values']['1500'])) self.label_34.setText("{:.2f}".format(data[year3]['values']['1250'] / data[year3]['values']['1500'])) self.label_35.setText("{:.2f}".format(data[year4]['values']['1250'] / data[year4]['values']['1500'])) self.label_36.setText("{:.2f}".format(data[year5]['values']['1250'] / data[year5]['values']['1500']))
Офлайн
Тебе нужно сначала подготовить все данные, а уже потом их выводить в метки.
Тебе нужно сначала подготовить все данные, а уже потом их передавать в .format().
Тебе нужно сначала подготовить все данные, а уже потом их передавать в формулу вычисления.
Вот этого всего у тебя нет, поэтому у тебя получилась каша-малаша-параша. Вот её ты не можешь укоротить. А секрет в том, что её не надо делать изначально.
Вот пример
LxterЭто не умная строчка, а, наоборот, тупая строчка. Ты повкладывал всё что возможно во всё что возможно и теперь сидишь с этим нагромождением и не знаешь, что с ним делать; а с ним ничего сделать нельзя.self.label_21.setText(year2 := list(data)[9]) #2020
self.label_20.setText(year1 := list(data)[10]) # 2021 self.label_21.setText(year2 := list(data)[9]) #2020 self.label_22.setText(year3 := list(data)[8]) #2019 self.label_23.setText(year4 := list(data)[7]) #2018 self.label_24.setText(year5 := list(data)[6]) #2017
data_list = list(data) years = data_list[10:5:-1] labels = ( self.label_20, self.label_21, self.label_22, self.label_23, self.label_24 ) for label, year in zip(labels, years): label.setText(year)
def set_labels_for_years(self, data): data_list = list(data) years = data_list[10:5:-1] labels = ( self.label_20, self.label_21, self.label_22, self.label_23, self.label_24 ) for label, year in zip(labels, years): label.setText(year)
def set_labels_for_current_liquidity(self, data): data_list = list(data) years = data_list[10:5:-1] labels = ( self.label_26, self.label_27, self.label_28, self.label_29, self.label_30 ) def get_coefficient(data, year): out = (data[year]['values']['1200'] / data[year]['values']['1500']) return out def format_coefficient(value): return '{:.2f}'.format(value) for label, year in zip(labels, years): coefficient = get_coefficient(data, year) coefficient_formatted = format_coefficient(coefficient) label.setText(coefficient_formatted)
def set_labels_for_absolute_liquidity(self, data): data_list = list(data) years = data_list[10:5:-1] labels = ( self.label_32, self.label_33, self.label_34, self.label_35, self.label_36 ) def get_coefficient(data, year): out = (data[year]['values']['1250'] / data[year]['values']['1500']) return out def format_coefficient(value): return '{:.2f}'.format(value) for label, year in zip(labels, years): coefficient = get_coefficient(data, year) coefficient_formatted = format_coefficient(coefficient) label.setText(coefficient_formatted)
Отредактировано py.user.next (Май 6, 2022 04:03:58)
Офлайн