我正在研究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')
我正在运行此脚本,但没有看到任何输出,也无法理解我做错了什么。
答案 0 :(得分:2)
将 main 函数移到类之外,然后专门执行它:
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 main 行,取消缩进该代码的四行,然后从顶层运行它。
答案 1 :(得分:2)
与许多其他编程语言(如Java)不同,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
方法提升为模块方法。