Python3.6中如何用if...is not None结束input()输入?
搞定Python待办脚本的终止问题!
嘿,我太懂这种卡在循环里进退两难的感觉了!作为Python新手搞待办列表脚本,碰到终止逻辑的坑真的超常见,我帮你把这个问题捋顺~
首先先说说你可能踩的坑:你提到怀疑把“not None”赋值给可变变量,大概率是这里出问题了——input()函数不管用户输入啥(包括空字符串),返回的都是字符串类型,永远不会返回None(除非用快捷键强制结束输入流,比如Ctrl+D)。所以如果你的循环条件是判断输入“not None”,那这个条件永远为真,直接陷入死循环;要是不小心把变量直接赋值成not None(这其实是布尔值True),那循环也会一直跑下去。
另外,你的代码开头的导入语句有语法问题,import time和from datetime import date要分开写哦,不然会报错。还有直接用open()打开文件后记得关闭,更稳妥的是用with语句,它会自动帮你处理文件关闭的问题,避免资源泄漏。
给你一个修正后的完整脚本,带清晰的终止逻辑:
import time from datetime import date # 生成带当日日期的待办文件名 today = date.today().strftime("%Y-%m-%d") todo_filename = f"ToDo_{today}.txt" print("🎉 欢迎使用待办列表!输入内容添加事项,输入'quit'即可退出程序") # 用无限循环+主动break的方式实现逻辑 while True: # 获取用户输入,同时去掉前后空格 todo_item = input("请输入待办事项:").strip() # 核心终止条件:输入quit(不区分大小写)就退出循环 if todo_item.lower() == "quit": print("👋 程序已终止,所有待办事项已保存!") break # 处理空输入的情况,提示用户 if not todo_item: print("⚠️ 请输入有效的待办事项,不要留空哦!") continue # 写入待办事项,加上时间戳更清晰 current_time = time.strftime("%H:%M:%S") with open(todo_filename, "a", encoding="utf-8") as todo_file: todo_file.write(f"[{today} {current_time}] {todo_item}\n") print(f"✅ 已成功添加待办:{todo_item}")
关键逻辑解释:
- 用
while True构建无限循环,通过break语句主动终止循环,这是最直观易懂的方式,适合新手。 - 终止条件设置为用户输入
quit(转成小写是为了兼容用户输入Quit/QUIT的情况),符合日常操作习惯。 - 用
strip()处理输入,避免用户不小心输入空格就触发操作的情况。 - 用
with语句操作文件,不用手动写todo_file.close(),安全又省心。 - 给待办事项加上日期和时间戳,让你的待办列表更清晰有条理。
你可以试试这个脚本,输入内容就能添加,输入quit就会干净利落地终止程序啦~
内容的提问来源于stack exchange,提问作者Samia00
相关产品推荐
相关产品推荐

