[英]How to return multiple Values from a function?
我在fizz buzz
function 中返回多個值,我想使用單獨的 function 來計算返回Fizz
、 Buzz
和FizzBuzz
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.