2.模拟英文打字练习的判分功能,文件“in.txt”中包含两段文字,第一段为原文,第二段为用户练习打字时输入的文字。编写程序统计打字练习时,大写字母、小写字母、数字字符以及其他字符的正确率,以及总正确率,正确率保留1位小数。如果某类字符的出现次数为0,则正确率显示为100.0%。 (1)假设in.txt,out.cvs文件在当前目录(和源程序在同一目录)下,输出文件格式请看测试数据。 (2)在考试目录中有File目录,存放有所有的编程题的的测试文件,对应不同的题目,如有需要,自己测试。 测试如下: [FILE=in.txt] Python List: ['A','b',323] pythan list; {'a',"b".323] [FILE=out.csv] 大写字母,0.0% 小写字母,88.9% 数字字符,100.0% 其他字符,54.5%
时间: 2024-03-30 11:34:52 浏览: 60
拼音五笔练习 专业英文拼音五笔打字训练 v2020.2.20
以下是使用Python编写的程序,可以满足您的需求:
```python
import csv
with open("in.txt", "r") as f:
text1 = f.readline().strip() # 读取原文
text2 = f.readline().strip() # 读取用户练习打字时输入的文字
counts = {"uppercase": 0, "lowercase": 0, "digit": 0, "other": 0} # 统计数量
total_count = 0 # 统计总数
for i in range(len(text1)):
if text1[i].isupper():
if i < len(text2) and text2[i] == text1[i]:
counts["uppercase"] += 1
total_count += 1
elif text1[i].islower():
if i < len(text2) and text2[i] == text1[i]:
counts["lowercase"] += 1
total_count += 1
elif text1[i].isdigit():
if i < len(text2) and text2[i] == text1[i]:
counts["digit"] += 1
total_count += 1
else:
if i < len(text2) and text2[i] == text1[i]:
counts["other"] += 1
total_count += 1
with open("out.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["大写字母", "{:.1%}".format(counts["uppercase"] / total_count if total_count != 0 else 1)])
writer.writerow(["小写字母", "{:.1%}".format(counts["lowercase"] / total_count if total_count != 0 else 1)])
writer.writerow(["数字字符", "{:.1%}".format(counts["digit"] / total_count if total_count != 0 else 1)])
writer.writerow(["其他字符", "{:.1%}".format(counts["other"] / total_count if total_count != 0 else 1)])
```
程序运行后,会读取文件“in.txt”中的两个字符串,分别为原文和用户练习打字时输入的文字。然后,程序会统计大写字母、小写字母、数字字符和其他字符的正确率,并将结果输出到文件“out.csv”中。输出的格式和测试数据中的格式是一致的。
需要注意的是,如果某类字符的出现次数为0,则正确率显示为100.0%。
阅读全文