пытаясь сложить два числа, прочитав их из списка и распечатав их порядковый номер. из их фактического списка - PullRequest
1 голос
/ 12 июля 2020

Учитывая массив целых чисел, вернуть индексы двух чисел таким образом, чтобы они в сумме составляли заданную c цель. , на каждом входе не использовался бы один и тот же элемент дважды.

class solution():
    def __init__(self,array_num,target_num):
        self.array_num=array_num
        self.target_num=target_num
    
        for  t in self.array_num:
            for  b in self.array_num:
                e=t+b
                w=self.array_num.index(t),self.array_num.index(b)
                y=list(w)
                if e==self.target_num:
                    
                    if y==[0,0]:
                        break
                    else:
                        print(y)

p=[3,3]
so=solution(p,6)

выход

[] or nothing

ожидаемый результат

[0,1]

1 Ответ

1 голос
/ 12 июля 2020

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

self.array_num.index(t)

Это всегда будет давать вам первое вхождение, которое здесь равно 0, хотя l oop фактически находится на второй позиции с индексом 1.

Чтобы этого избежать, переверните logi c: создайте l oop для индекса (используйте len() и range()), затем получите номер в этой позиции.

Поскольку этот вопрос звучит как домашнее задание или школьное задание, я не буду публиковать полное решение. Теперь возможно решить проблему.

Дополнительные подсказки, которые сделают вашего учителя счастливым:

  • [0, 0] - не единственное решение, которое приводит к 6. Вы хотите исключить а также другие недопустимые комбинации. Совет от профессионала: есть хорошее решение, которое не требует проверки и будет работать быстрее. Это легко найти, если вы переключили лог c.
  • В настоящее время вы выполняете всю работу в конструкторе объекта. Может быть, вам нужен метод, который выполняет фактические вычисления.
  • Ваши имена переменных не говорят сами за себя. Не используйте так много однобуквенных переменных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...