我的无限while
循环无法正常工作:
def main():
print("Type 1 to create a file")
print("Type 2 to read a file")
print("Type 3 to append a file")
print("Type 4 to calculate total of file")
print("Type 5 to end the program")
choice=input("Select a number:")
if choice == '1':
file_create(filename)
elif choice == '2':
read_file(filename)
elif choice == '3':
append_file(filename)
elif choice == '4':
add_numbers(filename)
filename=input("Give a name to your file:")
while main():
# ...
执行main
一次,但不循环。
答案 0 :(得分:2)
Mr.Anyoneout,Sylvain绝对是正确的。既然你不理解它,我会解释。 一个循环需要一个条件: - 真或假。 所以当你说: -
while True:
print('World')
与: -
相同a = 100
while a == 100:
print('poop')
因为== 100将评估为'True',并且因为让值保持不变而启动循环,并启动无限循环。但是你可以直接进行评估,即'True',以便直接启动无限循环。
如你所说: -
while main():
print('World')
所以现在想...当main()... main()是什么?...编译器没有得到任何代码来评估某些内容为'True'或'False'并且循环永远不会启动!
所以你需要的正确代码是: -
while True:
main()
答案 1 :(得分:0)
def main():
# ...
# <- no return statement
while main():
# Something
只要条件为真,while
循环就会循环。在这里,由于您的main()
函数没有return
语句,因此它不会返回任何显式。所以Python的行为好像它正在返回None
。 None
不是真的。所以条件是假的,你甚至不执行一次身体。
那样的事情(假设你需要在用户想要退出之前执行main()
):
def main():
# ...
print("Type 9 to quit")
choice=input("Select a number:")
if choice == '9':
return False
# Handle other cases
if choice == '1':
file_create(filename)
elif choice == '2':
# ...
return True
另一方面,正如@thiruvenkadam在下面的评论中所建议的那样,你可以保留你的主题,因为它写在你的问题中,但真的 写一个无限循环:
while True:
main()
但是,如果你想优雅地终止你的程序,你将不得不依赖其他一些机制,比如使用例外...