[英]Want to add string once at beginning
def countup(k, n):
'counts up from k to n'
if k == n:
print(k)
elif n <= 0:
print("Let's go!")
else:
print(k)
countup(k+1,n)
我想在遞歸開始之前添加“ Let's Go”的打印語句,因此它看起來像這樣:
計數(3,6)
我們走吧!
3
4
5
6
您可以這樣編寫包裝函數
def countup(k,n):
print "Let's Go"
_countup(k,n)
def _countup(k, n):
'counts up from k to n'
if k == n:
print(k)
else:
print(k)
_countup(k+1,n)
將遞歸移動到第二個函數,並讓第一個函數輸出字符串,然后調用第二個函數。
在您第一次調用該方法的行之前打印? 當然,您不能直接跳到遞歸中。
使用默認參數:
def countup(k, n,go=None):
'counts up from k to n'
if go:
print go
if k == n:
print(k)
elif n <= 0:
print("Let's go!")
else:
print(k)
countup(k+1,n)
countup(3,6,"Lets go")
輸出:
Lets go
3
4
5
6
對於像這樣的愚蠢的東西,我使用關鍵字參數:
def count_up_or_down(k, n, start=True):
'counts up from k to n'
if(start):
print("Let's go!")
if k == n:
print(k)
else:
print(k)
sign = 1 if n>k else -1
count_up_or_down(k+sign,n,start=False)
count_up_or_down(3,6)
但是實際上,函數通常應該做一件事情(一件事情做得好)。 您要的是一個函數,它執行2個無關的操作(打印“ Lets go!”並計數)。 最好將這兩個無關的動作分解為2個獨立的功能/語句。
您可以從調用函數中執行此操作,或者讓countup
是另一個打印“ Let's go!”的函數。 在調用遞歸代碼之前。
如果您想從遞歸內部執行此操作,請嘗試將其切換到頂部,然后向下遞歸(未經測試,但它在我的腦海中起作用):
def countupwithletsgo(k, n):
if k == n:
print("Let's go!")
print(n)
else:
countupwithletsgo(k, n-1)
print(n)
注意笨拙的函數名-通常這是一個好兆頭,它所做的不僅僅是一件事,而且應該重構。 建議先將其包裝成函數形式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.