2015-09-24 196 views
0

这是python 3,这个代码基本上检查一个单词是否在向后读时是相同的。当我通过Visual Studio执行此,什么也没有发生,我也得到了提示按任意键继续......为什么我的功能不工作?

if "__name__" == "__main__": 
    StartProgram() 

def StartProgram(): 
    Input = AskForDataSimple() 
    print(CheckIfPalindrome(Input)) 

def AskForDataSimple(): 
    print("Please input the line to test.") 
    In = input() 
    return In 

def CheckIfPalindrome(x): 
    if x[::-1] == x: 
     return True 
    else: 
     return False 

请注意,这个简单的版本确实可以工作:

x = input() 

if x[::-1] == x: 
    print(True) 
else: 
    print(False) 
+2

不要编辑所有的建议到您的代码,因为它会使答案过时 – progo

回答

2
if "__name__" == "__main__": 

更改为

if __name__ == "__main__": 

__name__是该模块的含变量名。您需要这些行,以便只有在直接执行此文件时才会使用主逻辑,而不是通过其他代码作为模块导入时使用。

它仍然不起作用,因为您需要定义在这些行之前调用的函数:将这些行移动到文件的末尾。

此外,这

def CheckIfPalindrome(x): 
    if x[::-1] == x: 
     return True 
    else: 
     return False 

可以

def CheckIfPalindrome(x): 
    return x[::-1] == x 
+2

并将其移动到底部 – interjay

+0

@Tim if yo你删除整个前两行,就没有什么能调用你定义的函数了,你不觉得吗? –

+0

@Tim你不应该删除前2行,否则没有人会打电话给你的功能。将它们移动到文件底部 – warvariuc

1

移动主要功能代替,以文件的底部,并尝试

if __name__ == "__main__": 
     StartProgram()