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(_)`
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
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));
}
添加回答
举报