2016-12-16 19 views
-2

我的問題是,如果我輸入錯誤的值爲x1或x2我的程序成功跳轉到Func1()但是當我正確地輸入他們第二次程序返回None。 我知道他爲什麼返回None,但我不知道如何在不寫入另外20-30行代碼的情況下解決這個問題。我正在尋找一些優雅的解決方案。 THX跳轉到python程序的確切部分

def Func1(): 
    value1=input('x1>') 
    value2=input('x2>') 
    if x1 meets condition: 
     if x2 meets condition: 
      return x1+x2 
    else: 
     Func1() 

def Func2(data2): 
    do somthing... 

def main(): 

    user=ActiveUser() 
    data1=Func1() 
    data2=Func2(data1) 
    DoSomething(data1,data2) 

回答

1

這裏是一個真正的重複性工作示例,這裏不像迄今所有其他的答案是不實際運行:

的情況是,無論是數量必須大於10:

def Func1(): 
    v1 = input("v1> ") 
    v2 = input("v2> ") 
    if v1 > 10 and v2 > 10: 
    return v1 + v2 
    else: 
    print "Try again" 
    return Func1() 

測試運行:

>>> Func1() 
v1> 1 
v2> 2 
Try again 
v1> 2 
v2> 3 
Try again 
v1> 12 
v2> 23 
35 

我不認爲實現這個作爲遞歸調用是一個goo無論如何,d主意。使用while循環?

+0

謝謝,我需要的部分是返回Func1()而不是我的想法,我只用了Func1()。 – Newbie

1

像這樣的東西應該做的工作:

def Func1(): 
    value1=None 
    value2=None 
    while not (x1 meets condition and x2 meets condition): 
     value1=input('x1>') 
     value2=input('x2>') 
    return x1+x2 

def Func2(data2): 
    do somthing... 

def main(): 
    user=ActiveUser() 
    data1=Func1() 
    data2=Func2(data1) 
    DoSomething(data1,data2) 
+0

感謝您的回答:D – Newbie

1

你不返回FUNC1遞歸調用。

然後x1和x2測試需要在相同的語句中。否則,如果x1 meets cond!x2 meets cond你仍然不會返回任何東西。

def Func1(): 
    value1=input('x1>') 
    value2=input('x2>') 
    if x1 meets condition and x2 meets condition: 
     return x1+x2 
    else: 
     return Func1() 
+0

謝謝,我需要的部分是返回Func1()而不是我的想法,我只用了Func1()。 – Newbie