当前位置: 首页 > news >正文

吴江高端网站建设网站建设云南

吴江高端网站建设,网站建设云南,衡阳seo,百度seo通科目录 10.3.9 决定报告哪些错误 10.4 存储数据 10.4.1 使用 json.dump()和 json.load() number_writer.py number_reader.py 10.4.2 保存和读取用户生成的数据 对于用户生成的数据#xff0c;使用json保存它们大有裨益#xff0c;因为如果不以某种方式进行存储#xf… 目录 10.3.9 决定报告哪些错误 10.4 存储数据 10.4.1 使用 json.dump()和 json.load() number_writer.py number_reader.py 10.4.2 保存和读取用户生成的数据 对于用户生成的数据使用json保存它们大有裨益因为如果不以某种方式进行存储等程 序停止运行时用户的信息将丢失。下面来看一个这样的例子用户首次运行程序时被提示输入自己的名字这样再次运行程序时就记住他了。 我们先来存储用户的名字 remember_me.py greet_user.py remember_me.py 10.4.3 重构 remember_me.py 往期快速传送门在文章最后 感谢大家的支持欢迎订阅收藏专栏将持续更新 10.3.9 决定报告哪些错误 在什么情况下该向用户报告错误在什么情况下又应该在失败时一声不吭呢如果用户知 道要分析哪些文件他们可能希望在有文件没有分析时出现一条消息将其中的原因告诉他们。 如果用户只想看到结果而并不知道要分析哪些文件可能就无需在有些文件不存在时告知他们。 向用户显示他不想看到的信息可能会降低程序的可用性。Python的错误处理结构让你能够细致地 控制与用户分享错误信息的程度要分享多少信息由你决定。 编写得很好且经过详尽测试的代码不容易出现内部错误如语法或逻辑错误但只要程序依 赖于外部因素如用户输入、存在指定的文件、有网络链接就有可能出现异常。凭借经验可判 断该在程序的什么地方包含异常处理块以及出现错误时该向用户提供多少相关的信息。 10.4 存储数据 很多程序都要求用户输入某种信息如让用户存储游戏首选项或提供要可视化的数据。不管 专注的是什么程序都把用户提供的信息存储在列表和字典等数据结构中。用户关闭程序时你 几乎总是要保存他们提供的信息一种简单的方式是使用模块json来存储数据。 模块json让你能够将简单的Python数据结构转储到文件中并在程序再次运行时加载该文件 中的数据。你还可以使用json在Python程序之间分享数据。更重要的是JSON数据格式并非Python 专用的这让你能够将以JSON格式存储的数据与使用其他编程语言的人分享。这是一种轻便格 式很有用也易于学习。 注意 JSONJavaScript Object Notation格式最初是为JavaScript开发的但随后成了一种常见 格式被包括Python在内的众多语言采用。 10.4.1 使用 json.dump()和 json.load() 我们来编写一个存储一组数字的简短程序再编写一个将这些数字读取到内存中的程序。第 一个程序将使用json.dump()来存储这组数字而第二个程序将使用json.load()。 函数json.dump()接受两个实参要存储的数据以及可用于存储数据的文件对象。下面演示了如何使用json.dump()来存储数字列表 number_writer.py import json numbers [2, 3, 5, 7, 11, 13] 1 filename numbers.json 2 with open(filename, w) as f_obj: 3 json.dump(numbers, f_obj) 我们先导入模块json再创建一个数字列表。在1处我们指定了要将该数字列表存储到其 中的文件的名称。通常使用文件扩展名.json来指出文件存储的数据为JSON格式。接下来我们 以写入模式打开这个文件让json能够将数据写入其中见2。在3处我们使用函数json.dump() 将数字列表存储到文件numbers.json中。 这个程序没有输出但我们可以打开文件numbers.json看看其内容。数据的存储格式与 Python中一样 [2, 3, 5, 7, 11, 13] 下面再编写一个程序使用json.load()将这个列表读取到内存中 number_reader.py mport json 1 filename numbers.json 2 with open(filename) as f_obj: 3 numbers json.load(f_obj) print(numbers) 在1处我们确保读取的是前面写入的文件。这次我们以读取方式打开这个文件因为Python 只需读取这个文件见2。在3处我们使用函数json.load()加载存储在numbers.json中的信息 并将其存储到变量numbers中。最后我们打印恢复的数字列表看看它是否与number_writer.py 中创建的数字列表相同 [2, 3, 5, 7, 11, 13] 这是一种在程序之间共享数据的简单方式。 10.4.2 保存和读取用户生成的数据 对于用户生成的数据使用json保存它们大有裨益因为如果不以某种方式进行存储等程 序停止运行时用户的信息将丢失。下面来看一个这样的例子用户首次运行程序时被提示输入自己的名字这样再次运行程序时就记住他了。 我们先来存储用户的名字 remember_me.py import json 1 username input(What is your name? ) filename username.json with open(filename, w) as f_obj: 2 json.dump(username, f_obj) 3 print(Well remember you when you come back, username !) 在1处我们提示输入用户名并将其存储在一个变量中。接下来我们调用json.dump() 并将用户名和一个文件对象传递给它从而将用户名存储到文件中见2。然后我们打印一 条消息指出我们存储了他输入的信息见3 What is your name? Eric Well remember you when you come back, Eric! 现在再编写一个程序向其名字被存储的用户发出问候 greet_user.py import json filename username.json with open(filename) as f_obj: 1 username json.load(f_obj) 2 print(Welcome back, username !) 在1处我们使用json.load()将存储在username.json中的信息读取到变量username中。恢复 用户名后我们就可以欢迎用户回来了见2 Welcome back, Eric! 我们需要将这两个程序合并到一个程序remember_me.py中。这个程序运行时我们将尝 试从文件username.json中获取用户名因此我们首先编写一个尝试恢复用户名的try代码块。如 果这个文件不存在我们就在except代码块中提示用户输入用户名并将其存储在username.json 中以便程序再次运行时能够获取它 remember_me.py import json # 如果以前存储了用户名就加载它 # 否则就提示用户输入用户名并存储它 filename username.json try: 1 with open(filename) as f_obj: 2 username json.load(f_obj) 3 except FileNotFoundError: 4 username input(What is your name? ) 5 with open(filename, w) as f_obj:json.dump(username, f_obj)print(Well remember you when you come back, username !) else:print(Welcome back, username !) 这里没有任何新代码只是将前两个示例的代码合并到了一个程序中。在1处我们尝试打 开文件username.json。如果这个文件存在就将其中的用户名读取到内存中见2再执行else 代码块即打印一条欢迎用户回来的消息。用户首次运行这个程序时文件username.json不存在 将引发FileNotFoundError异常见3因此Python将执行except代码块提示用户输入其用户名 见4再使用json.dump()存储该用户名并打印一句问候语见5。 无论执行的是except代码块还是else代码块都将显示用户名和合适的问候语。如果这个程 序是首次运行输出将如下 What is your name? Eric Well remember you when you come back, Eric! 否则输出将如下 Welcome back, Eric! 这是程序之前至少运行了一次时的输出。 10.4.3 重构 你经常会遇到这样的情况代码能够正确地运行但可做进一步的改进——将代码划分为 一系列完成具体工作的函数。这样的过程被称为重构。重构让代码更清晰、更易于理解、更容 易扩展。 要重构remember_me.py可将其大部分逻辑放到一个或多个函数中。remember_me.py的重点 是问候用户因此我们将其所有代码都放到一个名为greet_user()的函数中 remember_me.py import json def greet_user(): 1 问候用户并指出其名字 filename username.json trywith open(filename) as f_obj:username json.load(f_obj)except FileNotFoundError:username input(What is your name? )with open(filename, w) as f_obj:json.dump(username, f_obj)print(Well remember you when you come back, username !)else:print(Welcome back, username !) greet_user() 考虑到现在使用了一个函数我们删除了注释转而使用一个文档字符串来指出程序是做什 么的见1。这个程序更清晰些但函数greet_user()所做的不仅仅是问候用户还在存储了用 户名时获取它而在没有存储用户名时提示用户输入一个。 下面来重构greet_user()让它不执行这么多任务。为此我们首先将获取存储的用户名的 代码移到另一个函数中 import json def get_stored_username(): 1 如果存储了用户名就获取它 filename username.json try:with open(filename) as f_obj:username json.load(f_obj)except FileNotFoundError: 2 return Noneelse:return username def greet_user():问候用户并指出其名字username get_stored_username() 3 if username:print(Welcome back, username !)else:username input(What is your name? )filename username.jsonwith open(filename, w) as f_obj:json.dump(username, f_obj)print(Well remember you when you come back, username !) greet_user() 新增的函数get_stored_username()目标明确1处的文档字符串指出了这一点。如果存储了 用户名这个函数就获取并返回它如果文件username.json不存在这个函数就返回None见2。 这是一种不错的做法函数要么返回预期的值要么返回None这让我们能够使用函数的返回值 做简单测试。在3处如果成功地获取了用户名就打印一条欢迎用户回来的消息否则就提示用户输入用户名。 我们还需将greet_user()中的另一个代码块提取出来将没有存储用户名时提示用户输入的 代码放在一个独立的函数中 import json def get_stored_username():如果存储了用户名就获取它--snip-- def get_new_username():提示用户输入用户名username input(What is your name? )filename username.jsonwith open(filename, w) as f_obj:json.dump(username, f_obj)return username def greet_user():问候用户并指出其名字username get_stored_username()if username:print(Welcome back, username !)else:username get_new_username()print(Well remember you when you come back, username !) greet_user() 在remember_me.py的这个最终版本中每个函数都执行单一而清晰的任务。我们调用 greet_user()它打印一条合适的消息要么欢迎老用户回来要么问候新用户。为此它首先 调用get_stored_username()这个函数只负责获取存储的用户名如果存储了的话再在必要 时调用get_new_username()这个函数只负责获取并存储新用户的用户名。要编写出清晰而易于 维护和扩展的代码这种划分工作必不可少。 关于“Python”的核心知识点整理大全25-CSDN博客 关于“Python”的核心知识点整理大全12-CSDN博客 往期快速传送门在文章最后 感谢大家的支持欢迎订阅收藏专栏将持续更新
http://www.sczhlp.com/news/209591/

相关文章:

  • 网站域名注册信息wordpress 多层边栏
  • 自建营销型企业网站天美影视传媒广告制作流程
  • 网站建设行内资讯wordpress静态路由
  • 仿网站教程wordpress 微信打赏
  • 网站换程序什么是网络营销网络营销的目的有哪些内容
  • 天津高端网站wordpress文章页面没有格式调整
  • 网站优化能发外链的gvm网站大全男科医院网站建设
  • 12306网站哪个公司做的外贸网站是什么意思
  • 怎么建设网站视频教程wordpress主页404
  • 学校网站的建立国内购物平台排行榜
  • 昆明云南微网站wordpress访问太慢
  • 2012服务器如何做网站怎么做淘宝企业网站
  • 做网站还是微信小程序网站海外推广方案
  • 怎样写网站描述住建局官网查询系统
  • 网站如何进行备案外链推广软件
  • 响应式网站设计布局应届生简历模板
  • 泉州网站建设网站杭州做网站工作室
  • 2025年10月智能体公司推荐:五强对比评测榜助企业选型
  • 2025年棒球帽厂家推荐排行榜,运动棒球帽,时尚棒球帽,定制棒球帽,防晒棒球帽公司推荐!
  • 2025年10月留香沐浴露推荐:五强对比评测榜助你锁定24小时体香方案
  • 2025年10月智能体公司推荐:行胜领衔五强榜对比评测
  • 2025年10月留香沐浴露推荐:五强对比评测榜助你精准锁定持久体香
  • 网站网页设计怎么报价免费的网站域名查询方法有哪些
  • 芜湖做网站找哪家好企业官网制作费用
  • 商务网站设计论文南昌网站排名优化软件
  • 购买网站设计制作清远 网站建设
  • 网站建设的现状建筑设计资料网站
  • 极速网站建设定制网站建设与维护费用
  • 网站建设和维护需要学的东西滨海网站建设找哪家好
  • 苏州建设工程招标在哪个网站报名窗口网站建设