P5587 打字练习

本文介绍了一种在洛谷平台代码发送限制下,通过模拟退格键操作处理用户输入的文本,然后计算用户输入文本与预设文本的匹配程度,以实现按时间比例计算每分钟匹配字符数的程序。
摘要由CSDN通过智能技术生成

创作原因:有人在洛谷私信我代码,我本想直接发给他,结果发现洛谷中显示代码太长不能发送。

首先定义了一个函数backspace(x),它模拟了一个类似于退格键的操作,即在输入字符串中遇到"<"时,删除前一个字符。然后,将用户输入的文本存储在text列表中,直到用户输入"EOF"为止。
def backspace(x): # 退格键的操作
    a = []
    for i in range(len(x)): 
        if x[i] == "<":
            if len(a) > 0:
                a.pop()
                continue
            else:
                continue
        a.append(x[i])
    re = ""
    for i in range(len(a)):
        re += a[i]
    return re
接下来,用户会逐行输入文本,程序会调用backspace函数对用户输入的文本进行处理,将处理后的文本存储在user列表中,直到用户输入"EOF"为止。
text = []
while True:
    i = input()
    if i == "EOF":
        break
    text.append(i)
print(text)
cnt = 0
user = []
while True:
    i = input()
    i = backspace(i)
    if i == "EOF":
        break
    user.append(i)
print(user)
然后,用户需要输入一个时间值。程序会比较预设文本和用户输入的文本的匹配程度,计算它们相同字符的数量。最后,程序会根据用户输入的时间值计算每分钟的匹配字符数量,并输出结果。
time = int(input())
for i in range(min(len(text), len(user))):
    for j in range(min(len(text[i]), len(user[i]))):
        if text[i][j] == user[i][j]:
            cnt += 1
print(round(cnt / (time / 60)))
以下是总代码:
def backspace(x):
    a = []
    for i in range(len(x)):
        if x[i] == "<":
            if len(a) > 0:
                a.pop()
                continue
            else:
                continue
        a.append(x[i])
    re = ""
    for i in range(len(a)):
        re += a[i]
    return re


text = []
while True:
    i = input()
    if i == "EOF":
        break
    text.append(i)
print(text)
cnt = 0
user = []
while True:
    i = input()
    i = backspace(i)
    if i == "EOF":
        break
    user.append(i)
print(user)
time = int(input())

for i in range(min(len(text), len(user))):
    for j in range(min(len(text[i]), len(user[i]))):
        if text[i][j] == user[i][j]:
            cnt += 1

print(round(cnt / (time / 60)))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值