代码强制“Q-71A Way Too Long Words”不提交。- 令牌预期为Python3

我刚刚开始使用 Code Forces 来提高我解决问题的能力,并注意到尽管我的输出是正确的,但我还是能够通过“太长的单词”问题(?)

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

如果单词的长度严格超过 10 个字符,我们就认为它太长了。所有太长的单词都应该用特殊的缩写来代替。

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

因此,“本地化”将被拼写为“l10n”,“国际化”将被拼写为“i18n”。

建议您自动化更改缩写词的过程。因此,所有太长的单词都应该用缩写来代替,而不太长的单词则不应进行任何修改。

我的代码是:

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

正如您所看到的,当输入是整数时,它要求我不输出任何内容,而我认为我失败了。有什么理由吗?


慕沐林林
浏览 106回答 3
3回答

茅侃侃

列表顶部的数字是单词数。您希望将其用作输入,以便创建可能要缩短的单词数组。某些语言需要在创建之前初始化数组大小。下面是一个有效的解决方案。它将第一个输入作为整数,如果它大于 100,它将停止(正如在说明中他们说 n 不应大于 100),然后循环遍历其余输入,将它们添加到数组中,然后结束缩短需要缩短的单词。顺便说一句,你的逻辑是合理的,该代码确实有效,但在必须重新启动之前它只适用于单个输入。while True:&nbsp; &nbsp; n = int(input())&nbsp; &nbsp; if n in range(1,101):&nbsp; &nbsp; &nbsp; &nbsp; breakword_list = []for i in range(n):&nbsp; &nbsp; while True:&nbsp; &nbsp; &nbsp; &nbsp; word = input()&nbsp; &nbsp; &nbsp; &nbsp; if len(word) in range(1,101):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break&nbsp; &nbsp; word_list.append(word.lower())for _ in word_list:&nbsp; &nbsp; if len(_) > 10:&nbsp; &nbsp; &nbsp; &nbsp; print(_[0] + str(len(_[1:-1])) + _[-1])&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; print(_)`

Helenr

尽管该挑战并未规定输入的行数或字符长度必须介于 1 到 100 之间,因此无需编写任何代码来检查这些值。它只是指出 n 将在 1 到 100 之间,测试单词的字符长度也是如此。下面是代码,希望能更容易理解!def abbreviate(word):&nbsp; &nbsp; if len(word) > 10:&nbsp; &nbsp; &nbsp; &nbsp; abbr_num = str(len(word) - 2)&nbsp; &nbsp; &nbsp; &nbsp; abbr = word[0] + abbr_num + word[-1]&nbsp; &nbsp; &nbsp; &nbsp; print(abbr)&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; print(word)# n is the number of times that the function will be calledn = int(input())i = 1while i <= n:&nbsp; &nbsp; word = input()&nbsp; &nbsp; abbreviate(word)&nbsp; &nbsp; i += 1

饮歌长啸

JAVA问题最简单的解决方案——public static void printAbbv(String s){&nbsp; &nbsp; if (s.length() <= 10) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.print(s);&nbsp; &nbsp; &nbsp; &nbsp; return;&nbsp; &nbsp; }&nbsp; &nbsp; System.out.print(s.charAt(0));&nbsp; &nbsp; int count = 0;&nbsp; &nbsp; for (int i = 1; i < s.length() - 1; i++) {&nbsp; &nbsp; &nbsp; &nbsp; count++;&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; System.out.print(count + "" + s.charAt(s.length() - 1));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python