Как вернуть несколько значений из функции? - PullRequest
0 голосов
/ 01 мая 2020

Я возвращаю несколько значений внутри функции fizz buzz, и я хочу использовать отдельную функцию для подсчета количества возвращений Fizz, Buzz и FizzBuzz. Счетчик еще не закончен, но я пытаюсь понять, как правильно вернуть и вставить несколько значений или строк из одной функции в другую.

import random
n = random.randint(1,30)

def fizzbuzz_counter(Fizz,Buzz,FizzBuzz):
    print(Fizz,Buzz,FizzBuzz)
    #Counter not finished yet

def fizzbuzz(n):
    for i in range(1,n+1):
        if i % 3 == 0 and i % 5 == 0:
            FizzBuzz = "FizzBuzz"
            print(FizzBuzz)   
            return(FizzBuzz)
        elif i % 3 == 0:
            Fizz = "Fizz"
            print(Fizz)
            return Fizz
        elif i % 5 == 0:
            Buzz = "Buzz"
            print(Buzz)
            return Buzz
        else:
            print(i)

fizzbuzz(n)
fizzbuzz_counter(fizzbuzz(FizzBuzz,Fizz,Buzz))

1 Ответ

1 голос
/ 01 мая 2020

Первая проблема, с которой вы столкнулись, заключается в том, что, как только функция python возвращает значение, она останавливается. Таким образом, ваша функция fizzbuzz вернется только один раз, и, поскольку вы всегда начинаете с l oop с 1, возвращаемое значение всегда будет одинаковым (при условии, что n равно или больше 3. Например, fizzbuzz (10) и fizzbuzz). (123) всегда будет возвращать 'fizz' (и распечатывать 1,2, fizz перед возвратом. Это потому, что он вернется, когда я равняюсь 3. Если вы хотите, чтобы функция 'возвращала' несколько значений, поскольку она повторяется, вы должны проверить функции генератора

Однако самое простое решение, вероятно, состоит в том, чтобы fizzbuzz отслеживал счетчик внутри и возвращал сразу все 3 значения:

def fizzbuzz(n):
    fizzbuzz=0
    fizz=0
    buzz=0
    for i in range(1,n+1):
        if i % 3 == 0 and i % 5 == 0:
            print("FizzBuzz")   
            fizzbuzz += 1
        elif i % 3 == 0:
            print("Fizz")
            fizz += 1
        elif i % 5 == 0:
            print("Buzz")
            buzz += 1
        else:
            print(i)
    return fizzbuzz, fizz, buzz
...