2.模拟英文打字练习的判分功能,文件“in.txt”中包含两段文字,第一段为原文,第二段为用户练习打字时输入的文字。编写程序统计打字练习时,大写字母、小写字母、数字字符以及其他字符的正确率,以及总正确率,正确率保留1位小数。如果某类字符的出现次数为0,则正确率显示为100.0%。
时间: 2024-03-14 18:44:59 浏览: 8
好的,我来为您解答这个问题。
首先,我们需要读取文件并将原文和用户输入分别存储在两个字符串中。代码如下:
```python
with open('in.txt', 'r') as f:
lines = f.readlines()
original = lines[0].strip()
user_input = lines[1].strip()
```
接下来,我们需要统计每种类型字符的出现次数以及正确输入次数。代码如下:
```python
# 初始化各类型字符的出现次数和正确输入次数
upper_count = lower_count = digit_count = other_count = 0
upper_correct = lower_correct = digit_correct = other_correct = 0
for i in range(len(original)):
if original[i] == user_input[i]:
if original[i].isupper():
upper_correct += 1
elif original[i].islower():
lower_correct += 1
elif original[i].isdigit():
digit_correct += 1
else:
other_correct += 1
if original[i].isupper():
upper_count += 1
elif original[i].islower():
lower_count += 1
elif original[i].isdigit():
digit_count += 1
else:
other_count += 1
```
最后,我们可以计算每种类型字符的正确率以及总正确率,并将结果输出。代码如下:
```python
# 计算各类型字符的正确率
upper_rate = round(upper_correct / upper_count * 100, 1) if upper_count > 0 else 100.0
lower_rate = round(lower_correct / lower_count * 100, 1) if lower_count > 0 else 100.0
digit_rate = round(digit_correct / digit_count * 100, 1) if digit_count > 0 else 100.0
other_rate = round(other_correct / other_count * 100, 1) if other_count > 0 else 100.0
# 计算总正确率
total_count = upper_count + lower_count + digit_count + other_count
total_correct = upper_correct + lower_correct + digit_correct + other_correct
total_rate = round(total_correct / total_count * 100, 1)
# 输出结果
print(f"大写字母:{upper_rate}%")
print(f"小写字母:{lower_rate}%")
print(f"数字字符:{digit_rate}%")
print(f"其他字符:{other_rate}%")
print(f"总 正 确:{total_correct}/{total_count},总 正确率:{total_rate}%")
```
这样,我们就完成了这个问题的解答。