鱼C论坛

 找回密码
 立即注册
查看: 1745|回复: 8

[已解决]函数问题

[复制链接]
发表于 2020-9-21 19:17:49 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 xxlxxl 于 2020-9-21 19:22 编辑

问题:有两个列表,
列表1: words = ['green', 'grasses', 'frolicking', 'cats', '', 'kittens', 'playful']
列表2: start_chs = ['a', 'c', 'g']
列表里的内容会变,这里只是举个例子。
问题条件:当 words为空列表时,return False。当start_chs 为空列表时,return False,当两个列表都为空时return空列表。这部分的代码我已经敲出来了
  1. def starts_with(words, start_chs):
  2.     z = []
  3.     a = 0
  4.     if start_chs == '':
  5.         return(False)
  6.     elif words == '':
  7.         return(False)
  8.     for i in start_chs:
  9.         if i == words[0]:
  10.             a += 1
  11.         else:
  12.             pass
  13.     if a == 0:
  14.         return(False)
  15.     if words == '' and start_chs == '':
  16.         return(z)
  17.     else:
  18.         return(True)
复制代码

问题要求:自行定义一个函数  search(words, start_chs)        ,当 words 列表中的单词是以start_chs中的字母开头时(比如,‘green’ 以 ‘g' 开头),将这个词放入一个新列表中,最后输出这个新列表。


补上原题,因为原题为两个部分,就一起放上来了。

最佳答案
2020-9-21 19:28:56
本帖最后由 疾风怪盗 于 2020-9-21 19:57 编辑

你这都是从哪找来的题目......

  1. def starts_with(words, start_chs):
  2.     if len(words) == 0 or len(start_chs) == 0:
  3.         return False
  4.     else:
  5.         if words[0] in start_chs:
  6.             return True
  7.         else:
  8.             return False



  9. def search(words, start_chs):
  10.     new_words = []
  11.     for word in words:
  12.         if starts_with(word, start_chs):
  13.             new_words.append(word)
  14.     return new_words


  15. words = ['green', 'grasses', 'frolicking', 'cats', '', 'kittens', 'playful']
  16. start_chs = ['a', 'c', 'g']
  17. new_words = search(words, start_chs)
  18. print(new_words)


复制代码

最后的结果

最后的结果
屏幕快照 2020-09-21 下午9.18.12.png
屏幕快照 2020-09-21 下午9.18.24.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-21 19:28:56 | 显示全部楼层    本楼为最佳答案   
本帖最后由 疾风怪盗 于 2020-9-21 19:57 编辑

你这都是从哪找来的题目......

  1. def starts_with(words, start_chs):
  2.     if len(words) == 0 or len(start_chs) == 0:
  3.         return False
  4.     else:
  5.         if words[0] in start_chs:
  6.             return True
  7.         else:
  8.             return False



  9. def search(words, start_chs):
  10.     new_words = []
  11.     for word in words:
  12.         if starts_with(word, start_chs):
  13.             new_words.append(word)
  14.     return new_words


  15. words = ['green', 'grasses', 'frolicking', 'cats', '', 'kittens', 'playful']
  16. start_chs = ['a', 'c', 'g']
  17. new_words = search(words, start_chs)
  18. print(new_words)


复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-9-21 19:30:02 | 显示全部楼层
  1. words = ['green', 'grasses', 'frolicking', 'cats', '', 'kittens', 'playful']
  2. start_chs = ['a', 'c', 'g']

  3. def search(words, start_chs):
  4.     if not words and not start_chs:
  5.         return []
  6.     elif not words or not start_chs:
  7.         return False
  8.     res = [each for each in words if each and each[0] in start_chs]
  9.             
  10.     return res

  11. print(search(words, start_chs))
复制代码

那个starts_with没看懂有啥用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 19:39:48 | 显示全部楼层
qiuyouzhi 发表于 2020-9-21 19:30
那个starts_with没看懂有啥用


估计是课堂作业,不想做,就发论坛了

看了一会英文才明白,其实就是定义两个函数(不要看楼主的解释,看英文才会明白)
第一个来判断
第二个根据第一个判断来添加进列表
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 19:50:18 | 显示全部楼层
qiuyouzhi 发表于 2020-9-21 19:30
那个starts_with没看懂有啥用


不要看他说的中文,他说的不对,直接看英文题目即可。
俩函数,第一个函数作用是判断一个单词的首字母是不是在一个列表中,若在就返回True,若不在就返回False,楼主说的不对。
第二个函数的作用是从单词列表中找出首字母在字母列表中的单词组成新列表,然后返回新列表
四楼说的对!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 19:59:03 | 显示全部楼层
sunrise085 发表于 2020-9-21 19:50
不要看他说的中文,他说的不对,直接看英文题目即可。
俩函数,第一个函数作用是判断一个单词的首字母 ...

经你提醒,发现刚写的还是有点不对,漏了个没找到的return Flase,而且也不用循环,直接in列表就行了。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 20:05:30 | 显示全部楼层
疾风怪盗 发表于 2020-9-21 19:28
你这都是从哪找来的题目......

第一个函数可以再简单点
  1. def starts_with(word, start_chs):
  2.     if not word:
  3.         return False
  4.     if word[0] in start_chs:
  5.         return True
  6.     return False
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-21 20:06:44 | 显示全部楼层
疾风怪盗 发表于 2020-9-21 19:59
经你提醒,发现刚写的还是有点不对,漏了个没找到的return Flase,而且也不用循环,直接in列表就行了。。 ...

我发现那个问题, 然后正打算改一下,然后再看的时候你已经修改了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-24 14:19:49 | 显示全部楼层
疾风怪盗 发表于 2020-9-21 19:39
估计是课堂作业,不想做,就发论坛了

看了一会英文才明白,其实就是定义两个函数(不要看楼主的解释 ...

学校作业,实在做不明白
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-27 15:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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