mport csv
import json
import xml.etree.ElementTree as ET
def generate_exercises(num_exercises=5):
"""
生成简单的加法算式
:param num_exercises: 要生成的算式数量
:return: 包含算式和答案的字典列表
"""
exercises = []
for i in range(num_exercises):
exercise = f"{i} + {i + 1} = ?"
exercises.append({"exercise": exercise, "solution": i + (i + 1)})
return exercises
def save_to_csv(exercises, filename='exercises.csv'):
"""
将算式保存到CSV文件
:param exercises: 要保存的算式列表
:param filename: 保存的文件名
"""
try:
with open(filename, mode='w', newline='') as file:
writer = csv.DictWriter(file, fieldnames=['exercise', 'solution'])
writer.writeheader()
for exercise in exercises:
writer.writerow(exercise)
print(f"成功保存到 {filename}")
except Exception as e:
print(f"保存到CSV失败: {e}")
def save_to_json(exercises, filename='exercises.json'):
"""
将算式保存到JSON文件
:param exercises: 要保存的算式列表
:param filename: 保存的文件名
"""
try:
with open(filename, 'w') as file:
json.dump(exercises, file, indent=4)
print(f"成功保存到 {filename}")
except Exception as e:
print(f"保存到JSON失败: {e}")
def save_to_xml(exercises, filename='exercises.xml'):
"""
将算式保存到XML文件
:param exercises: 要保存的算式列表
:param filename: 保存的文件名
"""
try:
root = ET.Element("exercises")
for exercise in exercises:
exercise_element = ET.SubElement(root, "exercise")
exercise_element.text = exercise['exercise']
solution_element = ET.SubElement(exercise_element, "solution")
solution_element.text = str(exercise['solution'])
tree = ET.ElementTree(root)
tree.write(filename)
print(f"成功保存到 {filename}")
except Exception as e:
print(f"保存到XML失败: {e}")
def read_from_csv(filename='exercises.csv'):
"""
从CSV文件读取算式
:param filename: 读取的文件名
:return: 读取的算式列表
"""
try:
with open(filename, mode='r') as file:
reader = csv.DictReader(file)
return [row for row in reader]
except Exception as e:
print(f"从CSV读取失败: {e}")
return []
def read_from_json(filename='exercises.json'):
"""
从JSON文件读取算式
:param filename: 读取的文件名
:return: 读取的算式列表
"""
try:
with open(filename, 'r') as file:
return json.load(file)
except Exception as e:
print(f"从JSON读取失败: {e}")
return []
def read_from_xml(filename='exercises.xml'):
"""
从XML文件读取算式
:param filename: 读取的文件名
:return: 读取的算式列表
"""
try:
tree = ET.parse(filename)
root = tree.getroot()
exercises = []
for exercise in root.findall('exercise'):
solution = exercise.find('solution').text
exercises.append({
"exercise": exercise.text,
"solution": solution
})
return exercises
except Exception as e:
print(f"从XML读取失败: {e}")
return []
def main():
try:
num_exercises = int(input("请输入要生成的算式数量: "))
exercises = generate_exercises(num_exercises)
# 保存到不同格式的文件
save_to_csv(exercises)
save_to_json(exercises)
save_to_xml(exercises)
# 读取并打印内容
print("\n从CSV读取:")
for item in read_from_csv():
print(item)
print("\n从JSON读取:")
for item in read_from_json():
print(item)
print("\n从XML读取:")
for item in read_from_xml():
print(item)
except ValueError:
print("请输入有效的整数。")
if __name__ == "__main__":
main()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通