Найти - Пользователи
Полная версия: Красивое условие
Начало » Python для новичков » Красивое условие
1
SharkyEXE
Здравствуйте

Пожалуйста, будьте атк любезны, научите, как сделать красиво

Есть код

 if not vti_image:
   elif self.type in (self.IS_MULTICHANNEL, self.AUDIO_STEREO):
      # FIXME. but currently iAudioTrackInfo doesn't provide more information.
      audio = service.audioTracks()
      if audio:
       n = audio.getNumberOfTracks()
       idx = 0
       while idx < n:
        i = audio.getTrackInfo(idx)
        description = i.getDescription()
        if not vti_image:
         if description in ("AC3", "AC-3", "AC3+", "DTS"):
          if self.type == self.IS_MULTICHANNEL:
           return True
          elif self.type == self.AUDIO_STEREO:
           return False
         idx += 1
        if vti_image:
         if 'AC3' in description or 'DTS' in description or 'Dolby Digital' in description:
          return True
         idx += 1
       if self.type == self.IS_MULTICHANNEL:
        return False
       elif self.type == self.AUDIO_STEREO:
        return True
      return False[/b]
if vti_image:
   elif self.type in (self.IS_MULTICHANNEL):
     # FIXME. but currently iAudioTrackInfo doesn't provide more information.
      audio = service.audioTracks()
      if audio:
       n = audio.getNumberOfTracks()
       idx = 0
       while idx < n:
        i = audio.getTrackInfo(idx)
        description = i.getDescription()
        if not vti_image:
         if description in ("AC3", "AC-3", "AC3+", "DTS"):
          if self.type == self.IS_MULTICHANNEL:
           return True
          elif self.type == self.AUDIO_STEREO:
           return False
         idx += 1
        if vti_image:
         if 'AC3' in description or 'DTS' in description or 'Dolby Digital' in description:
          return True
         idx += 1
       if self.type == self.IS_MULTICHANNEL:
        return False
       elif self.type == self.AUDIO_STEREO:
        return True
      return False

В котором 100%но одинаковый код - выделено черным, жирным

Как сделать так, чтобы вместо двух 100%но одинаковых блоков ( ыделено черным, жирным) был один блок (выделено черным, жирным), сверху которого было только в одном различие

if not vti_image:
elif self.type in (self.IS_MULTICHANNEL, self.AUDIO_STEREO):
{блок - выделено черным, жирным}
if vti_image:
elif self.type in (self.IS_MULTICHANNEL):
{блок - выделено черным, жирным}

Спасибо.
FishHook
SharkyEXE
Как сделать так, чтобы вместо двух 100%но одинаковых блоков ( ыделено черным, жирным) был один блок
вы знакомы с концепцией функций?
SharkyEXE
FishHook

Здравствуйте

Нет, в общем я не супер мега программист, есть готовый код, хочется красивого решения, с мозгами, чем у меня, методом тыка, как смог
doza_and
В ваш код нельзя упростить, просто потому что он синтаксически неверен. Нельзя помочь написать код, который неизвестно что делает.
Допустим было:
 if not vti_image:
     actions1()
elif self.type in (self.IS_MULTICHANNEL, self.AUDIO_STEREO):
     common_actions()
if vti_image:
     actions2()
elif self.type in (self.IS_MULTICHANNEL):
     common_actions()
return True # добавил тк логическая проблема - что возвращать если ничего не выполнено

Его можно преобразовать так:
 if vti_image:
     actions2()
else:
     actions1()
if self.type in (self.IS_MULTICHANNEL, self.AUDIO_STEREO):
    common_actions()
return True

Надеюсь не ошибся в хитросплетениях.
SharkyEXE
doza_and

Здравствуйте

Пожалуйста, будьте так любезны, на моем коде напишите, как надо

Повторюсь, я не супер программист,м етодом чего-то въехать могу, просто я уверен, что по умному в питоне можно сделать, чтобы два раза один и тот же код не писать, его вынести в секцию, label, goto типа
xam1816

а у вас этот код вообще работает? смотря на ваш код у него табуляция сбита и почему-то в в блоке if сразу elif,как буд-то кто-то так защищался от копирования.

а так примерно вот по вашему выше коду(не стал вникать о чем он)

 def beautiful_code():
	if self.type in (self.IS_MULTICHANNEL, self.AUDIO_STEREO):
	# FIXME. but currently iAudioTrackInfo doesn't provide more information.
	audio = service.audioTracks()
	if audio:
		n = audio.getNumberOfTracks()
		idx = 0
		while idx < n:
			i = audio.getTrackInfo(idx)
			description = i.getDescription()
			if not vti_image:
				if description in ("AC3", "AC-3", "AC3+", "DTS"):
					if self.type == self.IS_MULTICHANNEL:
						return True
					elif self.type == self.AUDIO_STEREO:
						return False
				idx += 1
			if vti_image:
				if 'AC3' in description or 'DTS' in description or 'Dolby Digital' in description:
					return True
				idx += 1
		if self.type == self.IS_MULTICHANNEL:
			return False
		elif self.type == self.AUDIO_STEREO:
			return True
	return False[ / b]
if not vti_image:
	beautiful_code()
if vti_image:
	beautiful_code()

xam1816
xam1816
if not vti_image:
beautiful_code()
if vti_image:
beautiful_code()

вот этот блок вообще не логичен,и не нужен,
типа
если нет картинки:
выполнить код
если есть картинка:
выполнить этот же код



либо этот код писался для показухи,как-будто много работы сделано,много написано,
Vladimirv
Lazy метод:
С начала ищите, каким редактором пользуется
SharkyEXE
супер мега программист
будут разночтения.
Потом ставите плагин PEP8 для понравившегося редактора кода и немного читаете что это.
Дальше используете
SharkyEXE
методом тыка
для применения PEP8 к вашему коду и будет вам
SharkyEXE
красиво

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB