鱼C论坛

 找回密码
 立即注册
查看: 1047|回复: 15

[已解决]Python—list 自己做出来错了,不知道应该怎么改,谢谢大佬们

[复制链接]
发表于 2020-5-16 08:08:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:完成insert_word(word_list,word_to_insert,before_this_word)函数,该函数将传递三个参数:
字符串列表,要插入单词列表中的单词,在其前面插入第二个参数字的字。
如果要插入的单词尚未在单词列表中,则该功能会将单词插入到单词列表中的正确位置。
note:
该函数不返回结果,而是对参数列表进行更改。
如果要插入的单词已经在单词列表中,则该功能不执行任何操作。
如果第三个参数单词不在单词列表中,则该函数不执行任何操作。
测试Test1:
word_list = ['fish', 'barrel', 'like', 'shooting', 'sand', 'bank']
insert_word(word_list, "water", "bank")
print(word_list)
输出结果result1:
['fish', 'barrel', 'like', 'shooting', 'sand', 'water', 'bank']
Test2:
word_list = ['cat', 'the', 'bag', 'let', 'out', 'can']
insert_word(word_list, "dog", "let")
print(word_list)
result2:
['cat', 'the', 'bag', 'dog', 'let', 'out', 'can']


最佳答案
2020-5-16 08:35:55
MIQIWEI 发表于 2020-5-16 08:18
def insert_word(word_list, word_to_insert, before_this_word):
   
    for word in range(len(word_ ...
def insert_word(word_list, word_to_insert, before_this_word):
    if word_to_insert not in word_list and before_this_word in word_list:
        before_this_word = word_list.index(before_this_word)
        word_list.insert(before_this_word, word_to_insert)
        return word_list

改成这样就行了,你的for循环在这里是没有用的,你这里的return只让你for 循环了一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-16 08:11:54 | 显示全部楼层
把你的代码发出来……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 08:14:37 | 显示全部楼层
同楼上
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 08:18:57 | 显示全部楼层
def insert_word(word_list, word_to_insert, before_this_word):
   
    for word in range(len(word_list)):
        before_this_word=word_list.index(before_this_word)
        word_in=word_list[before_this_word]
        word_list.insert(word_in,word_to_insert)
        return word_list
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 08:21:16 | 显示全部楼层
本帖最后由 Twilight6 于 2020-5-16 08:27 编辑
MIQIWEI 发表于 2020-5-16 08:18
def insert_word(word_list, word_to_insert, before_this_word):
   
    for word in range(len(word_ ...


我看错了 抱歉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 08:34:38 | 显示全部楼层

您知道这道题该怎么改吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 08:35:55 | 显示全部楼层    本楼为最佳答案   
MIQIWEI 发表于 2020-5-16 08:18
def insert_word(word_list, word_to_insert, before_this_word):
   
    for word in range(len(word_ ...
def insert_word(word_list, word_to_insert, before_this_word):
    if word_to_insert not in word_list and before_this_word in word_list:
        before_this_word = word_list.index(before_this_word)
        word_list.insert(before_this_word, word_to_insert)
        return word_list

改成这样就行了,你的for循环在这里是没有用的,你这里的return只让你for 循环了一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 08:36:50 | 显示全部楼层
def insert_word(word_list, word_to_insert, before_this_word):
    if word_to_insert in word_list or before_this_word not in word_list:
        pass
    else:
        ind = word_list.index(before_this_word)
        word_list.insert(ind, word_to_insert)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 08:50:37 | 显示全部楼层
Twilight6 发表于 2020-5-16 08:35
改成这样就行了,你的for循环在这里是没有用的,你这里的return只让你for 循环了一次

谢谢您!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 08:51:12 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 08:51:39 | 显示全部楼层

如果帮助到你 记得给个最佳答案哦

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 08:59:57 | 显示全部楼层
Twilight6 发表于 2020-5-16 08:35
改成这样就行了,你的for循环在这里是没有用的,你这里的return只让你for 循环了一次

还想问您一道题~麻烦了
问题:
完成remove_short_words(word_list)函数,该函数将字符串列表作为参数传递给该函数。该函数首先调用在上一个问题中开发的get_shortest_length()函数,以查找列表中最短单词的长度。然后,该函数使用pop()方法删除参数列表中所有长度最短的单词。
Note:
该函数不返回结果,而是对参数列表进行更改。
您可以假定测试代码中包含get_shortest_length()函数,而您的答案中无需包含此函数。
Test1:
word_list = ['fish', 'barrel', 'like', 'shooting', 'sand', 'bank']
remove_short_words(word_list)
print(word_list)
result1:
['barrel', 'shooting']
Test2:
word_list = ['cat', 'the', 'the', 'bag', 'let', 'out', 'can']
remove_short_words(word_list)
print(word_list)
result2:
[]

我的代码是:
def get_shortest_length(word_list):
    new_list=[]
    for word in range(len(word_list)):
        if len(word_list)>0:
            word_min=min(word_list,key=len)
            return len(word_min)
        else:
            return 0

def remove_short_words(word_list):
    new_list=[]
    for word in range(len(word_list)):
        if len(word)>len(word_min):
            new_list.append(word)
            return new_list
        else:
            return[]

您能告诉一下我该怎么改吗?谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 09:05:49 | 显示全部楼层
MIQIWEI 发表于 2020-5-16 08:59
还想问您一道题~麻烦了
问题:
完成remove_short_words(word_list)函数,该函数将字符串列表作为参数 ...

好 我看看 你骚等
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 09:31:36 | 显示全部楼层
好的 谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-16 09:37:28 | 显示全部楼层
def get_shortest_length(word_list):

    if len(word_list) > 0:  # 判断列表是否有参数应该放在第一个开始判断,因为没参数进行后面完全没有意义
        word_min_leng = len(min(word_list, key=len))
        # min 只是返回遇到的第一个最小长度的字符串,你要把所有这个长度的都输出,所以计下长度
        return word_min_leng  # 返回最小长度的字符串


def remove_short_words(word_list):
    min_len = get_shortest_length(word_list)
    new_list = []
    for word in range(len(word_list)):
        if len(word_list[word]) == min_len:
            new_list.append(word)
    for i in new_list[::-1]:
        word_list.pop(i)
    return word_list

word_list = ['cat', 'the', 'the', 'bag', 'let', 'out', 'can']
remove_short_words(word_list)
print(word_list)

word_list = ['fish', 'barrel', 'like', 'shooting', 'sand', 'bank']
remove_short_words(word_list)
print(word_list)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-16 09:47:40 | 显示全部楼层

嗯嗯太感谢了!我想问一下new_list[::-1]这个地方是什么意思呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-21 08:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表