2017-03-03 81 views
-2

我有以下腳本:函數返回無

def collectUserPrompt():  

    xml_file = raw_input('Enter the full file path (ex: C:\Users\Stan\Documents\myxml.xml):') 

    try: 
     os.path.isfile(xml_file) 
     print 'good path' 
    except: 
     print "Please enter a valid xml file path!" 
     collectUserPrompt() 

    multiplier_input = raw_input('Enter XML multiplier (numbers only):') 
    try: 
     multiplier = int(multiplier_input) 
     print 'good multiplier' 
    except : 
     print "Please enter a valid integer!" 
     collectUserPrompt() 

     return xml_file, multiplier 

user_input = collectUserPrompt() 
print user_input 

當我跑,我得到:

Enter the full file path (ex: C:\Users\LIDMZ3W\Documents\myxml.xml):C:\Users\Stan\Documents\Aptana Studio 3 Workspace\ADFTest\src\Training\nascoUMBY.xml 
good path 
Enter XML multiplier (numbers only):3 
good multiplier 
None 

它看起來像我每次回國None,當我試圖從raw_input函數返回驗證的用戶輸入。

+0

你的'return'是縮進的,所以它在'except'中。您還應該返回遞歸調用的結果。 – Ryan

回答

2

您的return聲明位於except區塊中。看起來好像你打算直接在函數的塊中。也就是說,你需要在縮進時將它取回一級:

def collectUserPrompt():  

    xml_file = raw_input('Enter the full file path (ex: C:\Users\Stan\Documents\myxml.xml):') 

    try: 
     os.path.isfile(xml_file) 
     print 'good path' 
    except: 
     print "Please enter a valid xml file path!" 
     collectUserPrompt() 

    multiplier_input = raw_input('Enter XML multiplier (numbers only):') 
    try: 
     multiplier = int(multiplier_input) 
     print 'good multiplier' 
    except : 
     print "Please enter a valid integer!" 
     collectUserPrompt() 

    return xml_file, multiplier # here! 
+1

謝謝。我是python新手,仍然適應生活沒有大括號。 – etm124

+0

我不認爲這是完全正確的。如果我輸入的文件路徑不正確,則在except塊中調用'collectUserPrompt',並再次請求我輸入路徑。如果我第二次輸入正確的文件路徑,那麼從'collectUserPrompt'內部返回正確的路徑,並且由於它沒有被分配給任何東西或返回,所以它被廢棄。然後外面的'CollectUserPrompt'返回我最初的錯誤路徑。 – Kevin