为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕沐林林 2023-12-09 16:04:25
我刚刚开始使用 Code Forces 来提高我解决问题的能力,并注意到尽管我的输出是正确的,但我还是能够通过&ldquo;太长的单词&rdquo;问题(?)有时,像&ldquo;本地化&rdquo;或&ldquo;国际化&rdquo;这样的词太长,以至于在一篇文章中多次写它们是很烦人的。如果单词的长度严格超过 10 个字符,我们就认为它太长了。所有太长的单词都应该用特殊的缩写来代替。这个缩写是这样写的:我们写下单词的第一个和最后一个字母,并在它们之间写下第一个和最后一个字母之间的字母数。该数字采用十进制,并且不包含任何前导零。因此,&ldquo;本地化&rdquo;将被拼写为&ldquo;l10n&rdquo;,&ldquo;国际化&rdquo;将被拼写为&ldquo;i18n&rdquo;。建议您自动化更改缩写词的过程。因此,所有太长的单词都应该用缩写来代替,而不太长的单词则不应进行任何修改。我的代码是: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:4wordlocalizationinternationalizationpneumonoultramicroscopicsilicovolcanoconiosisExample output:wordl10ni18np43s正如您所看到的,当输入是整数时,它要求我不输出任何内容,而我认为我失败了。有什么理由吗?
查看完整描述

3 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

列表顶部的数字是单词数。您希望将其用作输入,以便创建可能要缩短的单词数组。某些语言需要在创建之前初始化数组大小。下面是一个有效的解决方案。它将第一个输入作为整数,如果它大于 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(_)`


查看完整回答
反对 回复 2023-12-09
?
Helenr

TA贡献1780条经验 获得超3个赞

尽管该挑战并未规定输入的行数或字符长度必须介于 1 到 100 之间,因此无需编写任何代码来检查这些值。它只是指出 n 将在 1 到 100 之间,测试单词的字符长度也是如此。下面是代码,希望能更容易理解!


def abbreviate(word):

    if len(word) > 10:

        abbr_num = str(len(word) - 2)

        abbr = word[0] + abbr_num + word[-1]

        print(abbr)

    else:

        print(word)




# n is the number of times that the function will be called

n = int(input())

i = 1

while i <= n:

    word = input()

    abbreviate(word)

    i += 1


查看完整回答
反对 回复 2023-12-09
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

JAVA问题最简单的解决方案——


public static void printAbbv(String s){

    if (s.length() <= 10) {

        System.out.print(s);

        return;

    }


    System.out.print(s.charAt(0));


    int count = 0;

    for (int i = 1; i < s.length() - 1; i++) {

        count++;

    }

    

    System.out.print(count + "" + s.charAt(s.length() - 1));

}


查看完整回答
反对 回复 2023-12-09
  • 3 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信