Python 从输出中获取空白字符串
我很难理解这段代码到底是怎么回事。目标是在两个名称都丢失时输出一个空白字符串。我的代码只输出“Name:”不管我使用什么作为返回值Python 从输出中获取空白字符串,python,string,return,Python,String,Return,我很难理解这段代码到底是怎么回事。目标是在两个名称都丢失时输出一个空白字符串。我的代码只输出“Name:”不管我使用什么作为返回值 def format_name(first_name, last_name): if len(first_name) and len(last_name) !=0: return "Name: " + str(last_name) +", " + str(first_name) elif len
def format_name(first_name, last_name):
if len(first_name) and len(last_name) !=0:
return "Name: " + str(last_name) +", " + str(first_name)
elif len(last_name) == 0:
return "Name: " + str(first_name)
elif len(first_name) == 0:
return "Name: " + str(last_name)
else:
return ""
问题是,如果两个字符串都为空,那么一个字符串也为空。你必须重新安排你的条件,否则最后一个条件将永远不会被触发。另外,与问题无关,您只需检查if string
即可检查string
是否为非空。此外,不需要将名称转换为str
(假设它们已经是str
)
对于较少的if/elif
“乐趣”,您可以筛选并加入非空名称(如果有):
def format_name(first_name, last_name):
present = [x for x in (last_name, first_name) if x]
if present:
return "Name: " + ", ".join(present)
else:
return ""
(第二个的逻辑也要简单得多,我在第一个版本中犯了几个错误,代码重复也少了。)问题是,如果两个字符串都是空的,那么一个字符串也是空的。你必须重新安排你的条件,否则最后一个条件将永远不会被触发。另外,与问题无关,您只需检查if string
即可检查string
是否为非空。此外,不需要将名称转换为str
(假设它们已经是str
)
对于较少的if/elif
“乐趣”,您可以筛选并加入非空名称(如果有):
def format_name(first_name, last_name):
present = [x for x in (last_name, first_name) if x]
if present:
return "Name: " + ", ".join(present)
else:
return ""
(第二个版本的逻辑也简单得多,我在第一个版本中犯了几个错误,代码重复也少了。)我自己做了一个format_name函数。请测试一下。如果你能让我知道你的意见,我会很高兴的
def format_name(first_name, last_name):
name_list = [last_name, first_name]
name_list = [name.strip() for name in name_list if name.strip()]
full_name = ", ".join(name_list).strip()
if full_name:
return "Name: " + full_name
else:
return ""
first_name = ""
last_name = ""
full_name = format_name(first_name, last_name)
print(full_name)
我自己做了一个format_name函数。请测试一下。如果你能让我知道你的意见,我会很高兴的
def format_name(first_name, last_name):
name_list = [last_name, first_name]
name_list = [name.strip() for name in name_list if name.strip()]
full_name = ", ".join(name_list).strip()
if full_name:
return "Name: " + full_name
else:
return ""
first_name = ""
last_name = ""
full_name = format_name(first_name, last_name)
print(full_name)
您将需要重新排列条件,以便在分别检查名称的两个部分之前,能够检查名称的两个部分是否为空
def_n(名字、姓氏):
如果len(名字)!=0和len(姓)=0:
返回“Name:”+str(姓)+“,“+str(名))
elif len(姓)==0和len(名)==0:
返回“”
elif len(姓氏)=0:
return“Name:”+str(名字)
其他:
return“Name:+str(姓氏)
您需要重新排列条件,以便在分别检查名称的两个部分之前,能够检查名称的两个部分是否为空
def_n(名字、姓氏):
如果len(名字)!=0和len(姓)=0:
返回“Name:”+str(姓)+“,“+str(名))
elif len(姓)==0和len(名)==0:
返回“”
elif len(姓氏)=0:
return“Name:”+str(名字)
其他:
return“Name:+str(姓氏)
您可能希望标记特定语言,以便更多地关注您的问题。请标记您正在使用的编程语言。这将缩小你想要针对的特定听觉对象(以及想要查看相应帖子的人)。请注意len(名字)和len(姓氏)=0与len(名字)!=0和len(姓)!=0
,尽管在这个特定的情况下,它的行为实际上是相同的。好的,谢谢,对不起,第一篇帖子。@tobias\u k在什么情况下len(名字)和len(姓氏)=0与len(名字)不同=0和len(姓)=0
?您可能希望标记特定的语言,以便更多地关注您的问题。请标记您正在使用的编程语言。这将缩小你想要针对的特定听觉对象(以及想要查看相应帖子的人)。请注意len(名字)和len(姓氏)=0与len(名字)!=0和len(姓)!=0
,尽管在这个特定的情况下,它的行为实际上是相同的。好的,谢谢,对不起,第一篇帖子。@tobias\u k在什么情况下len(名字)和len(姓氏)=0与len(名字)不同=0和len(姓)=0
?在发布代码之前,您应该知道自己运行代码的结果。我在发布代码之前对其进行了测试。当first_name=“”和last_name=“”时,结果为“”。您好,mkrieger1。你使用了什么输入?我可以向你保证,我在你的答案前一分钟发布我的答案时没有使用你的代码。还记得Python的禅宗吗:“应该有一种——最好只有一种——显而易见的方法来实现它。”就是这样。是的,它工作得很好,有点谦逊,对于一个noob来说,看到如何使用Python的不同示例也是令人兴奋的。谢谢大家的帮助。在发布代码之前,您应该知道自己运行代码的结果。我在发布代码之前对其进行了测试。当first_name=“”和last_name=“”时,结果为“”。您好,mkrieger1。你使用了什么输入?我可以向你保证,我在你的答案前一分钟发布我的答案时没有使用你的代码。还记得Python的禅宗吗:“应该有一种——最好只有一种——显而易见的方法来实现它。”就是这样。是的,它工作得很好,有点谦逊,对于一个noob来说,看到如何使用Python的不同示例也是令人兴奋的。谢谢大家的帮助。所以我测试了你的新代码,得到了和以前一样的结果。当我输入print(format_name(“,”))时,输出是“name:”仍然???@strebor71抱歉,另一个错误。请现在再次测试。所以我测试了你的新代码,得到了与以前相同的结果。当我输入print(format_name(“,”))时,输出是“name:”仍然???@strebor71抱歉,另一个错误。请现在再次测试。