模拟英文打字练习的判分功能,文件“in.txt”中包含两段文字,第一段为原文,第二段为用户练习打字时输入的文字。编写程序统计打字练习时,大写字母、小写字母、数字字符以及其他字符的正确率,以及总正确率,正确率保留1位小数。如果某类字符的出现次数为0,则正确率显示为100.0%。
时间: 2024-03-08 11:46:19 浏览: 171
拼音打字练习 拼音打字练习 v2017.3
好的,这是一个关于文件读写和字符串处理的问题,需要用到 Python 的一些基本库函数。下面是我的实现代码,你可以参考一下:
```python
with open('in.txt', 'r') as f:
text = f.readlines()
origin = text[0].strip() # 原文
typed = text[1].strip() # 用户输入的文字
# 统计字符数量
total = len(origin)
upper_cnt = 0
lower_cnt = 0
digit_cnt = 0
other_cnt = 0
correct_cnt = 0
for i in range(total):
if origin[i] == typed[i]:
correct_cnt += 1
if origin[i].isupper():
upper_cnt += 1
elif origin[i].islower():
lower_cnt += 1
elif origin[i].isdigit():
digit_cnt += 1
else:
other_cnt += 1
# 计算正确率
upper_rate = 100.0 if upper_cnt == 0 else round(100.0 * (upper_cnt - abs(upper_cnt - (correct_cnt + 1))) / upper_cnt, 1)
lower_rate = 100.0 if lower_cnt == 0 else round(100.0 * (lower_cnt - abs(lower_cnt - (correct_cnt + 1))) / lower_cnt, 1)
digit_rate = 100.0 if digit_cnt == 0 else round(100.0 * (digit_cnt - abs(digit_cnt - (correct_cnt + 1))) / digit_cnt, 1)
other_rate = 100.0 if other_cnt == 0 else round(100.0 * (other_cnt - abs(other_cnt - (correct_cnt + 1))) / other_cnt, 1)
total_rate = round(100.0 * correct_cnt / total, 1)
# 输出结果
print(f"Upper case: {upper_rate}%")
print(f"Lower case: {lower_rate}%")
print(f"Digit: {digit_rate}%")
print(f"Other: {other_rate}%")
print(f"Total: {total_rate}%")
```
这个程序首先读取文件 `in.txt` 中的两段文字,然后遍历这两段文字,统计大写字母、小写字母、数字字符以及其他字符的数量,并且计算出总的正确数量。最后,根据计算出的数量,计算出正确率,并且输出结果。注意正确率需要保留一位小数,而且如果某个字符类型的数量为 0,则正确率显示为 100.0%。
阅读全文