首页 > 解决方案 > 代码强制“Q-71A Way Too Long Words”不提交。- 令牌预期 Python3

问题描述

我刚刚开始使用 Code Forces 来提高我的问题解决能力,并注意到虽然我的输出是正确的,但我还是能够通过 Way Too Long Words 问题(?)这是问题的链接: https ://codeforces.com/contest /71/问题/A

还有一个问题是(对于那些不想去网站的人):

有时像“本地化”或“国际化”这样的词太长了,以至于在一篇文章中多次写它们是很累的。

让我们考虑一个词太长,如果它的长度严格超过 10 个字符。所有太长的词都应该用特殊的缩写代替。

这个缩写是这样写的:我们写下一个单词的第一个和最后一个字母,在它们之间我们写下第一个和最后一个字母之间的字母数。该数字采用十进制系统,不包含任何前导零。

因此,“localization”将拼写为“l10n”,“internationalization» 将拼写为“i18n”。

建议您使用缩写词自动更改单词的过程。在那个地方所有太长的词都应该用缩写代替,不太长的词不应该经过任何chan

我的代码是:

word = input()
while not word.isnumeric():
    if len(word) > 10:
        between = (len(word)-2)
        first, last = (word[0], word[-1])
        print(f"{first}{between}{last}")
        break
    elif len(word) <= 10:
        print(word)
        break

该网站还给出了一些例子:

Example input:
4
word
localization
internationalization
pneumonoultramicroscopicsilicovolcanoconiosis

Example output:
word
l10n
i18n
p43s

如您所见,当输入为整数时,它要求我不输出任何内容,而我相信我失败了。有什么理由吗?

标签: pythonpython-3.x

解决方案


列表顶部的数字是单词的数量。您想将其用作输入,这样您就可以创建一个您可能会缩短的单词数组。某些语言需要在创建之前初始化数组大小。下面是一个有效的解决方案。它将第一个输入作为整数,如果它大于 100,它将停止(如他们所说的 n 不应大于 100 的指令)然后循环遍历其余输入,然后将它们添加到数组中结束用缩短需要缩短的词。顺便说一句,您的逻辑是合理的,该代码确实有效,但它只能在必须重新启动之前对单个输入有效。

while True:
    n = int(input())
    if n in range(1,101):
        break
word_list = []
for i in range(n):
    while True:
        word = input()
        if len(word) in range(1,101):
            break
    word_list.append(word.lower())

for _ in word_list:
    if len(_) > 10:
        print(_[0] + str(len(_[1:-1])) + _[-1])
    else:
        print(_)`

推荐阅读