You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python函数decode()求助:如何提取金字塔每行的最后一个单词?

问题:提取金字塔每行最后一个单词时错误包含所有单词

我的decode()函数需要读取.txt文件中的文本,将数字-单词对按数字顺序排列成金字塔形状,并返回由每行最后一个单词组成的字符串。

我已成功完成数字-单词对的排列,但尝试提取每行最后一个单词时,结果字符串会包含所有单词。

原代码

txt_file = ['3 love', '6 computers', '2 dogs', '4 cats', '1 I', '5 you']
def decode():
    sorted_file = sorted(txt_file)

    row = 0
    last_words_string = ''

    for i in range(len(sorted_file)):
        for j in range (0, i + 1):
            if row >= len(sorted_file):
                break
            pairs = sorted_file[row].split()
            last_word = pairs[-1]
            last_words_string += last_word + ' '
            row += 1
            print(pairs, end=' ')
        print()
    print(last_words_string)

decode()

当前输出

['1', 'I']
['2', 'dogs'] ['3', 'love']
['4', 'cats'] ['5', 'you'] ['6', 'computers']



I dogs love cats you computers

我需要的输出是"I love computers",请问问题出在哪?


问题根源

你现在的代码会把每个单词都追加到last_words_string里,而不是只保留每行的最后一个单词。内层循环的每一次迭代都执行了last_words_string += last_word + ' ',导致所有单词都被加入结果。

修正方案

只需要在每行的最后一个元素处理时,才将单词加入结果字符串。可以通过判断j == i(因为内层循环j从0到i,当j等于i时,就是当前行的最后一个元素)来实现:

修改后的代码:

txt_file = ['3 love', '6 computers', '2 dogs', '4 cats', '1 I', '5 you']
def decode():
    sorted_file = sorted(txt_file)

    row = 0
    last_words_string = ''

    for i in range(len(sorted_file)):
        for j in range(0, i + 1):
            if row >= len(sorted_file):
                break
            pairs = sorted_file[row].split()
            last_word = pairs[-1]
            # 仅当是当前行最后一个元素时,才添加到结果
            if j == i:
                last_words_string += last_word + ' '
            row += 1
            print(pairs, end=' ')
        print()
    # 去掉末尾多余的空格
    print(last_words_string.strip())

decode()

修正后输出

['1', 'I']
['2', 'dogs'] ['3', 'love']
['4', 'cats'] ['5', 'you'] ['6', 'computers']



I love computers

内容的提问来源于stack exchange,提问作者Julianna M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:42:56