2017-03-03 130 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