首页 > 编程问答 >使用案例显示时在“.txt”文件中打印现有待办事项时出现名称错误

使用案例显示时在“.txt”文件中打印现有待办事项时出现名称错误

时间:2024-07-22 03:52:36浏览次数:13  
标签:python file nameerror

我正在尝试使用以下代码中给出的案例显示将现有的待办事项保存在我的 txt 文件中:

while True:
    user_action = input("Type add, show:")
    user_action = user_action.strip()
    match user_action:
        case 'add':
            todo = input("Enter any todo:") + "\n"

            file = open('todos.txt', 'r')
            todos = file.readlines()
            file.close()

            todos.append(todo)

            file = open('todos.txt', 'w')
            file.writelines(todos)
            file.close()
        case 'show' | 'display':
            for index, item in enumerate(todos):
            print(f"{index + 1}. {item}")

我已经将现有的“待办事项”保存在我的 txt 文件中,但在运行代码并使用命令 ' show',我的IDE给出以下错误:

Traceback (most recent call last):
File "c:\\Ayan\\coding\\paid course.vscode\\udemy.py", line 20, in \<module\>
for index, item in enumerate(todos):
^^^^^
NameError: name 'todos' is not defined

该错误的出现是因为变量 todos 只在 'add' case 中被定义,但在 'show' 'display' case 中没有被定义。这就是说, 'show' 'display' case 访问不了 'add' case 中定义的 todos 变量。

为了解决该问题,需要在循环外定义 todos 变量。这样一来,它在所有 case 中都可用。以下为修改后的代码:

todos = []  # 在循环外初始化 todos 列表

while True:
    user_action = input("Type add, show:")
    user_action = user_action.strip()

    match user_action:
        case 'add':
            todo = input("Enter any todo:") + "\n"

            file = open('todos.txt', 'r')
            todos = file.readlines()  # 从文件中读取待办事项
            file.close()

            todos.append(todo)

            file = open('todos.txt', 'w')
            file.writelines(todos)
            file.close()
        case 'show' | 'display':
            # 现在 todos 在这里可见
            for index, item in enumerate(todos):
                print(f"{index + 1}. {item}") 

通过这些修改,代码就可以在 'show' 'display' case 中访问 todos 变量,从而显示从文件中读取的待办事项。

标签:python,file,nameerror
From: 78776198

相关文章

  • Python 中的 azure.ai.translation.document - 无法使用当前权限访问源文档位置
    我在使用Python中的azure.ai.translation.document库时遇到问题。我已经在Azure中设置了翻译服务以及带有两个容器的Blob存储。我已使用“用户委托密钥”创建了SAS连接。一种用于源(读取/列表),一种用于目标(写入/列表)。例如我尝试运行Python程序,但源b......
  • 博文标题:探索Python中的元编程:装饰器的魔法
    引言在Python的世界里,装饰器(Decorators)是一种非常强大的特性,它允许程序员在不修改原始函数代码的情况下,为函数添加新的功能。这种机制不仅增强了代码的可读性和可维护性,还提供了高度的灵活性和扩展性。本文将深入探讨装饰器的基本概念、工作原理以及如何利用它们来简化和......
  • 使用Python 和 Selenium 抓取 酷狗 音乐专辑 附源码
    在这篇博客中,我将分享如何使用Python和Selenium抓取酷狗音乐网站上的歌曲信息。我们将使用BeautifulSoup解析HTML内容,并提取歌曲和专辑信息。准备工作首先,我们需要安装一些必要的库:pipinstallrequestsbeautifulsoup4selenium代码实现以下是完整的代码:importosi......
  • 基于Django+Python的网易新闻与评论舆情热点分析平台
    一、引言在信息爆炸的时代,人们每天面对海量的信息流,如何从中筛选出有价值的信息并进行深度分析变得尤为重要。基于Django+Python的网易新闻与评论舆情热点分析平台,旨在为用户提供一个高效的数据分析工具,帮助用户快速理解新闻趋势、情感倾向以及公众对特定事件的看法。通过自......
  • Python解释器详解及其应用场景
    Python解释器及其应用场景一、Python解释器概述Python解释器是Python程序运行的核心,它负责读取Python代码(即.py文件)并将其转换为机器语言,从而使计算机能够执行。简单来说,Python解释器就像是Python代码与计算机之间的翻译官,把Python代码翻译成计算机能懂的语言。Python解释器......
  • 利用【MATLAB】和【Python】进行【图与网络模型】的高级应用与分析】
    目录一、图与网络的基本概念1.无向图与有向图2.简单图、完全图、赋权图3.顶点的度4.子图与连通性5.图的矩阵表示MATLAB代码实例Python代码实例 二、最短路径问题1.最短路径问题的定义2.Dijkstra算法MATLAB代码实例Python代码实例三、最小生成树问题1.......
  • python_wholeweek1
    目录(day1-7)一周的学习1.计算机之编程什么是编程语言什么是编程为什么要编程2.计算机组成原理计算机五大组成CPU控制器运算器内存外存输入设备输出设备(I/O设备)32位和64位32位64位多核CPU硬盘工作原理机械硬盘工作原理固态硬盘工作原理3.计算机操作系统文件是什么?应用程序是什......
  • python模块与包
    python模块与包1.模块(是一个python文件)自定义模块:(1)新建一个py文件在同一个project里然后可以用import先导入再在main里使用main.py importcc.ad(2,5)c.py defad(s,y):print(s+y)导入模块中的方法会自动实行被调用模块里所有所有语句(2)导入不同模块同一方法......
  • Python网络数据可视化全攻略【方法与技巧详解】
    ......
  • Python爬虫实战案例(爬取文字)
    爬取豆瓣电影的数据首先打开"豆瓣电影Top250"这个网页:按F12,找到网络;向上拉动,找到名称栏中的第一个,单机打开;可以在标头里看到请求URL和请求方式,复制URL(需要用到);在表头的最下面有"User-Agent",也复制下来(也可以下载pipinstallfake_useragent库,用别人写好的UA)。定位......