我正在编写leetcode,但实际上以前从未在本地编写过文件。
class Solution(object):
    def singleNumber(self, nums):
        for i in range(0,len(nums),2):
            if (i != len(nums) - 1) and (nums[i] != nums[i+1]):
                print (nums[i])
            elif i == len(nums) - 1:
                print (nums[i])
    def main():
        nums=[1,1,2,2,3]
        s=Solution()
        s.singleNumber(nums)
        print('done')我正在运行这个脚本,但是看不到任何输出,也不明白我做错了什么。
发布于 2016-10-11 07:15:37
将您的主函数移到类之外,然后专门执行它:
class Solution(object):
    def singleNumber(self, nums):
        for i in range(0,len(nums),2):
            if (i != len(nums) - 1) and (nums[i] != nums[i+1]):
                print (nums[i])
            elif i == len(nums) - 1:
                print (nums[i])
def main():
    nums=[1,1,2,2,3]
    s=Solution()
    s.singleNumber(nums)
    print('done')
main()输出:
3
done另一种可能是使它成为一个单独的函数:删除def主行,取消该代码的四行缩进,并从顶层运行它。
发布于 2016-10-11 07:25:09
与许多其他编程语言不同,Python不要求类中有main方法。此外,Python 不需要将 main 方法定义为:它将整个文件作为一个应用程序运行。在你最初的帖子中,Python执行以下操作:
singleNumber定义为它保存的代码,将方法main定义为它保存的代码。Solution.要使应用程序正确,必须按如下方式编写:
class Solution(object):
    def singleNumber(self, nums):
        for i in range(0,len(nums),2):
            if (i != len(nums) - 1) and (nums[i] != nums[i+1]):
                print (nums[i])
            elif i == len(nums) - 1:
                print (nums[i])
if __name__=='__main__':
    nums=[1,1,2,2,3]
    s=Solution()
    s.singleNumber(nums)
    print('done')您可能想知道为什么行if __name__=='__main__':;每个文件都包含隐式定义的变量__name__,它的值取决于您是直接运行文件还是导入文件。在第一种情况下,赋值__name__='__main__'已经完成,在第二种情况下,__name__变量被赋予文件本身的名称;这让您了解该文件是否是主文件。
您还可以丢弃Solution类并将singleNumber方法提升为模块方法。
https://stackoverflow.com/questions/39968122
复制相似问题