11.19

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()
posted @   liuxuechao  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示