MIQIWEI 发表于 2020-5-16 08:08:18

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

题目:完成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']


liuzhengyuan 发表于 2020-5-16 08:11:54

把你的代码发出来……

焦健鬼 发表于 2020-5-16 08:14:37

同楼上

MIQIWEI 发表于 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
      word_list.insert(word_in,word_to_insert)
      return word_list

Twilight6 发表于 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_ ...

我看错了 抱歉

MIQIWEI 发表于 2020-5-16 08:34:38

Twilight6 发表于 2020-5-16 08:21
我看错了 抱歉

您知道这道题该怎么改吗?

Twilight6 发表于 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 循环了一次

海上飞鱼 发表于 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)

MIQIWEI 发表于 2020-5-16 08:50:37

Twilight6 发表于 2020-5-16 08:35
改成这样就行了,你的for循环在这里是没有用的,你这里的return只让你for 循环了一次

谢谢您!!

MIQIWEI 发表于 2020-5-16 08:51:12

海上飞鱼 发表于 2020-5-16 08:36


谢谢大佬!!!

Twilight6 发表于 2020-5-16 08:51:39

MIQIWEI 发表于 2020-5-16 08:50
谢谢您!!

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

{:10_287:}

MIQIWEI 发表于 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[]

您能告诉一下我该怎么改吗?谢谢!

Twilight6 发表于 2020-5-16 09:05:49

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

好 我看看 你骚等

MIQIWEI 发表于 2020-5-16 09:31:36

好的 谢谢!

Twilight6 发表于 2020-5-16 09:37:28

MIQIWEI 发表于 2020-5-16 09:31
好的 谢谢!

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) == 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)

MIQIWEI 发表于 2020-5-16 09:47:40

Twilight6 发表于 2020-5-16 09:37


嗯嗯太感谢了!我想问一下new_list[::-1]这个地方是什么意思呢?
页: [1]
查看完整版本: Python—list 自己做出来错了,不知道应该怎么改,谢谢大佬们