在这件事上尝试了两个小时,迭代、切片和连接字符串列表。代码看起来很完美,但它给出了一个奇怪的输出

#我的代码


def sec_soc_nam(friends):

  for x in friends:

    return "".join(x[0])


print(sec_soc_nam(["tina","andre",'suzie']))

#输出:t


#别人的解决方案


def society_name(friends):

    return ''.join(sorted(i[0] for i in friends))

#输出所需的结果:“ast”


注意:忽略排序这是迭代不起作用......仅输出第一项。我检查过,但没有丢失任何组件。


守着星空守着你
浏览 120回答 4
4回答

慕运维8079593

如果您仍然想使用 join 关键字def sec_soc_nam(friends):  a = []  for x in friends:    a.append(x[0])  return "".join(sorted(a))print(sec_soc_nam(["tina","andre",'suzie']))

人到中年有点甜

如果你这样编写代码for x in friends:     return "".join(x[0])您将仅输出第一个字符串(“tina”)的第一个字符(x[0])因为返回指令基本上告诉你的函数停止在那里并返回第一个迭代值仅当您收集了所有起始字符后才应执行返回"".join(sorted(i[0] for i in friends))这正是另一个函数的作用。首先从所有字符串中提取第一个字符 (x[0])之后按字母顺序对你的字符进行排序(已排序)然后返回这些字符串的串联(返回“”.join)

开满天机

def sec_soc_nam(friends):  return " ".join(friends)print(sec_soc_nam(["tina","andre",'suzie']))您将返回每个循环的项目,而不是加入整个列表。x[0] 返回该项的第一个字母只需 print(" ".join(["tina","andre",'suzie'])) 就会为您加入列表

慕田峪4524236

你的 for 循环中有一个返回赋值,所以你的程序在第一个循环后退出该函数,你可以尝试这个:def sec_soc_nam(friends):   a=''   for x in friends:     a=a+x[0]   return a
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python