我刚刚开始学习python而且我被赶上了。我来自C背景。
class Alarm:
def timer():
def main():
print ("Timer has Started")
main()
当我尝试运行此代码时,我总是遇到一个愚蠢的错误:
alarm > python alarm.py
File "alarm.py", line 5
def main():
^
IndentationError: expected an indented block
答案 0 :(得分:11)
你有一个空的def
def timer():
使用
def timer():
pass
代替。
答案 1 :(得分:3)
了解pass
statement,main
通常不属于班级。
全局(模块级)main()
函数比Alarm.main()
类方法简单。通常,main()
函数来自模块级别。
class Alarm:
def timer():
pass
def main():
print ("Timer has Started")
main()
答案 2 :(得分:1)
尝试使用deindent main()并将pass添加到timer并定义一个init方法:
class Alarm():
def __init__(self):
print ("Timer has Started")
<shell>$ Alarm()
答案 3 :(得分:1)
您的计时器功能未定义。 (并且你的空格/制表符缩进可能是混合的)
有关课程的详细信息,请参阅教程(classes)。
class Alarm:
def timer(self):
pass
def main(self):
print ("Timer has Started")
if __name__ == '__main__':
class_inst = Alarm()
class_inst.main()
如果你进入python阅读PEP8 此外,使用pylint会有所帮助,它会指出您在执行代码之前会遇到的缩进和许多其他错误。
答案 4 :(得分:1)
我认为你想使用__init__
,这是构造函数......
class Alarm:
def timer(self):
print('timer has started')
def __init__(self):
print('constructor')
self.timer()
x = Alarm()
构造
计时器已启动
我的例子与其他人的不同之处在于我实际上是在实例化一个新对象。
注意:
self
作为类__init__
是为构造函数定义的方法new
关键字pass
def foo(self): pass
关键字
答案 5 :(得分:1)
调用main()会产生未定义的函数错误,因为它是一个Alarm方法。
恕我直言,您应该使用的正确表格如下:
class Alarm:
def timer():
pass
@staticmethod
def main():
print ("Timer has Started")
if __name__ == "__main__" :
Alarm.main()
答案 6 :(得分:0)
正如其他人所指出的,你有一个语法错误,因为timer()没有正文。
你根本不需要在python中使用main()。通常人们使用它来表明文件是顶级程序而不是要导入的模块,但它只是按照惯例
你也可能会看到这个成语
def main():
blah blah
if __name__ == "__main__":
main()
此处__name__
是一个特殊变量。如果文件已导入,则它将包含模块名称,因此比较失败且main未运行。
对于顶级程序__name__
包含“__main__
”,因此将运行main()函数。
这很有用,因为有时你的模块在作为程序加载时可能会运行测试,但是如果要将这些测试导入到更大的程序中,则不希望这些测试运行
答案 7 :(得分:0)
在Python中,您不需要将所有内容都定义为类。在此代码中没有任何内容可以封装,因此没有理由定义Alarm类。只需在模块中使用这些功能。
答案 8 :(得分:0)
感谢所有人的帮助。我正在做一个小闹钟/计时器,提醒我起床,不时地散步。我得到了大部分工作,而且效果很好。检查它与秒表,它很好。
import time
def timer(num):
seconds = num*60
print (num , "minutes", seconds , "seconds")
while (seconds > 0):
print (seconds, "seconds")
time.sleep(1)
seconds = seconds-1
print ("Time to get up and take a WALK!!!!")
main()
def main():
number = input("Input time : ")
int(number)
timer(number)
if __name__ == '__main__':
main()