如何解决在这个问题上尝试了两个小时,迭代,切片和加入字符串列表该代码看起来很完美,但是给出了一个奇怪的输出
#我的代码
def sec_soc_nam(friends):
for x in friends:
return "".join(x[0])
print(sec_soc_nam(["tina","andre",'suzie']))
#output:t
#其他人的解决方案
def society_name(friends):
return ''.join(sorted(i[0] for i in friends))
#ouput期望的结果:“ ast”
注意:忽略排序 迭代无效,仅输出第一项。我检查了一下,但没有组件丢失。
解决方法
如果您这样编写代码
for x in friends:
return "".join(x[0])
您将只输出第一个字符串(“ tina”)的第一个字符(x [0])
因为返回指令基本上是对您的函数说要在此停止并返回第一个迭代值
仅当您收集了所有起始字符后才应执行返回
"".join(sorted(i[0] for i in friends))
这正是其他函数的作用。
- first从所有字符串中提取第一个字符(x [0])
- 然后按字母顺序对字符进行排序(排序)
- 然后返回这些字符串的串联(返回“” .join)
如果您仍然想使用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']))
,
def sec_soc_nam(friends):
return " ".join(friends)
print(sec_soc_nam(["tina",'suzie']))
您要为每个循环返回项目,而不是加入整个列表。
x [0]返回项目的首字母
只需print(“” .join([“ tina”,“ andre”,'suzie']))即可为您加入列表
,您在for循环中有一个返回赋值,因此您的程序在第一个循环后退出该函数,您可以尝试以下方法:
def sec_soc_nam(friends):
a=''
for x in friends:
a=a+x[0]
return a
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。