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



#我的代码

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";

注意:忽略排序迭代不起作用。。。仅输出第一项。我检查了一下,但没有遗漏任何部件。

如果您仍然想使用联接关键字

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](
  • 然后按字母顺序对字符进行排序(排序(
  • 然后返回这些字符串的串联(return".join"(
def sec_soc_nam(friends):
return " ".join(friends)
print(sec_soc_nam(["tina","andre",'suzie']))

您为每个循环返回项目,而不是加入整个列表。

x[0]返回项目的第一个字母

只需打印(".join(["tina","andre","uzie"](即可为您加入列表

如果在for循环中有一个返回赋值,那么程序在第一个循环后退出函数,可以尝试以下操作:

def sec_soc_nam(friends):
a=''
for x in friends:
a=a+x[0]
return a

相关内容

最新更新