簡體   English   中英

如何從 function 返回多個值?

[英]How to return multiple Values from a function?

我在fizz buzz function 中返回多個值,我想使用單獨的 function 來計算返回FizzBuzzFizzBuzz zz 的次數。 計數器尚未完成,但我試圖了解正確的方法是從一個 function 返回並將多個值或字符串插入另一個。

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))

您遇到的第一個問題是,一旦 python function 返回一個值,它就會停止。 因此,您的 fizzbuzz function 將只返回一次,並且由於您始終從 1 開始 for 循環,因此返回值將始終相同(假設 n 等於或大於 3。例如 fizzbuzz(10) 和 fizzbuzz(123)將始終返回“fizz”(並在返回之前打印出 1,2,fizz。這是因為一旦 i 等於 3,它將返回。如果您希望 function 在循環時“返回”多個值,您應該檢查生成器函數

然而,最簡單的解決方案可能是讓 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM