Если еще, верните проблему в цикле в Python - PullRequest
0 голосов
/ 27 мая 2018

Функция должна посчитать, сколько выражений равно y в запросе, и, если в запросе нет y, функция должна вернуть «нет y в запросе».Мне нужно уменьшить выражение возврата, но в этом случае Progran не работает должным образом.Мне нужно сделать выражение как:

def foo():    
    number = 0
    for x in request:
       if x == y:
           number += 1

        return "there is no y in request"

    return number

, но даже если х это у, это дает "х не у".Если я использую еще как:

def foo():
    number = 0
    for x in request:
       if x == y:
          number += 1

       else:
           return "there is no y in request"

    return number

Но иначе возвращение против синтаксиса rools.Как исправить код?

1 Ответ

0 голосов
/ 27 мая 2018

Я вижу несколько проблем с этим кодом:

  • Понятно, что number должен подсчитывать общее количество вхождений y в request.Оператор return немедленно завершает функцию, возвращающую значение.Если вы хотите выполнить итерацию и обработать каждый элемент request, вам нужно продолжить выполнение.Этот код не работает, потому что он останавливается на первом элементе, который не является y, и возвращает вместо продолжения.
  • y не определен
  • Семантически функция может использоваться повторно из-зааргументы, которые вы можете передать, чтобы варьировать свои звонки в зависимости от ваших потребностей

Следующие работы:

y = 5

def foo(request):
    number = 0
    for x in request:
       if x is y:
          number += 1
    return "there is no y in request" if number == 0 else number

foo([1,2,5])
...