创作原因:有人在洛谷私信我代码,我本想直接发给他,结果发现洛谷中显示代码太长不能发送。
首先定义了一个函数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)))