You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:27:38