软件构造,生成算式采用CSV、XML、JSON三种形式进行存储并读取。

news/2024/10/12 16:01:53

编写代码完成将生成的算式及习题长期保存下来,采用CSV、XML、JSON三种形式进行存储并读取。提交相关代码及运行截图。

import random
import csv
import json
import xml.etree.ElementTree as ET
from xml.dom import minidom# 生成随机算式数据
def generate_exercises(count=10):exercises = []operators = ['+', '-', '*', '/']for _ in range(count):num1 = random.randint(1, 10)num2 = random.randint(1, 10)operator = random.choice(operators)# 确保不会出现除以零的情况if operator == '/' and num2 == 0:num2 = 1expression = f"{num1} {operator} {num2}"result = eval(expression)  # 使用eval计算表达式的结果exercises.append({"expression": expression, "result": result})return exercises# CSV 存储与读取
def save_to_csv(data, filename):with open(filename, 'w', newline='') as file:writer = csv.writer(file)writer.writerow(['Expression', 'Result'])for item in data:writer.writerow([item['expression'], item['result']])def load_from_csv(filename):with open(filename, 'r') as file:reader = csv.DictReader(file)return [row for row in reader]# JSON 存储与读取
def save_to_json(data, filename):with open(filename, 'w') as file:json.dump(data, file, indent=4)def load_from_json(filename):with open(filename, 'r') as file:return json.load(file)# XML 存储与读取
def save_to_xml(data, filename):root = ET.Element("Exercises")for item in data:exercise = ET.SubElement(root, "Exercise")ET.SubElement(exercise, "Expression").text = str(item['expression'])ET.SubElement(exercise, "Result").text = str(item['result'])tree = ET.ElementTree(root)xmlstr = minidom.parseString(ET.tostring(root)).toprettyxml(indent="   ")with open(filename, 'w') as f:f.write(xmlstr)def load_from_xml(filename):tree = ET.parse(filename)root = tree.getroot()exercises = []for exercise in root.findall('Exercise'):expression = exercise.find('Expression').textresult = float(exercise.find('Result').text)  # 假设结果都是数字exercises.append({"expression": expression, "result": result})return exercises# 主程序
def main():print("请选择操作:")print("1. 生成新的算式并保存")print("2. 从文件加载算式")choice = input("请输入选项 (1 或 2): ")if choice == '1':count = int(input("请输入要生成的算式数量: "))exercises = generate_exercises(count)format_choice = input("请选择保存格式 (csv, json, xml): ").strip().lower()if format_choice == 'csv':save_to_csv(exercises, 'exercises.csv')print("算式已保存到 exercises.csv 文件中.")elif format_choice == 'json':save_to_json(exercises, 'exercises.json')print("算式已保存到 exercises.json 文件中.")elif format_choice == 'xml':save_to_xml(exercises, 'exercises.xml')print("算式已保存到 exercises.xml 文件中.")else:print("未知的文件格式,请输入 csv, json 或 xml.")elif choice == '2':format_choice = input("请选择加载的文件格式 (csv, json, xml): ").strip().lower()if format_choice == 'csv':loaded_data = load_from_csv('exercises.csv')elif format_choice == 'json':loaded_data = load_from_json('exercises.json')elif format_choice == 'xml':loaded_data = load_from_xml('exercises.xml')else:print("未知的文件格式,请输入 csv, json 或 xml.")returnprint(f"从 {format_choice} 文件加载的数据:")print(loaded_data)else:print("无效的选择,请输入 1 或 2.")if __name__ == "__main__":main()

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/70700.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

一文详述:AI 网关与 API 网关到底有什么区别?

近年来AI 发展火热,大模型已经成为推动各行各业业务创新和增长的关键力量。随之而来问题是“企业该如何安全管理和部署AI应用的挑战?”AI基础架构的设计不仅要支持现有的业务需求,还要能够适应未来技术的快速发展。在这样的背景下,AI网关的概念应运而生,AI 网关在AI应用的…

Armitage:MSF图形界面神器

原创 自然嗨 嗨嗨安全免责声明 请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者无关。Armitage Armitage是一款Java写的Metasploit图形界面化的攻击软件,可以用它结合 Metasploit中已知的exploit来针对主机存在的漏洞自动化攻击。通过命令行的方式…

不一样的事务

事务处理几乎在每一个信息系统中都会涉及,它存在的意义是为了保证系统中所有的数据都是符合期望的,且相互关联的数据之间不会产生矛盾,即数据状态的一致性。按照数据库的经典理论,要达成这个目标,需要三方面共同努力来保障。原子性(Atomic):在同一项业务处理过程中,事务…

java获取当前时间(年月日)

转自:https://blog.csdn.net/lynn_Kun/article/details/76997856在java程序中常常需要获取的时间和设置时间的格式 1、获取当前的时间Date date=new Date();//此时date为当前的时间 2、设置时间的格式Date date=new Date();//此时date为当前的时间System.out.println(date);Si…

沉浸式娱乐新纪元,3DCAT推出5G+实时云渲染VR大空间解决方案

随着5G、人工智能和云计算等技术的不断成熟,VR大空间体验的发展前景愈发广阔.3DCAT实时渲染云作为这一领域的赋能者,将持续创新,为用户提供更高效、更灵活的5G+实时云渲染VR大空间解决方案.近年来,虚拟现实(VR)技术在娱乐、教育、医疗等多个领域展现出巨大的潜力,尤其是VR大…

一种基于alpine、支持ARM架构64位的镜像构建方法及其构建系统

一种基于alpine、支持ARM架构64位的镜像构建方法及其构建系统,包括以下步骤: 步骤1:准备arm64位基础镜像包本文分享自天翼云开发者社区《一种基于alpine、支持ARM架构64位的镜像构建方法及其构建系统》,作者:郑****团 一种基于alpine、支持ARM架构64位的镜像构建方法及其构…

点对点协议PPP

PPP协议的特点 接入到互联网,PPP协议就是用户计算机和ISP进行通信时,所使用的数据链路层协议,它应满足如下需求:简单封装成帧透明性多种网络层协议多种类型链路差错检测检测连接状态最大转送单元网络层地址协商数据压缩协商具体内容见谢书P79PPP协议的组成 PPP协议有三个组…