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條經驗 獲得超4個贊
盡管該挑戰并未規定輸入的行數或字符長度必須介于 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));
}
添加回答
舉報