如何在Python中合并来自不同函数的两个字符串
问题分析与修正方案
你的代码主要有几个问题导致无法正确合并名字:
函数参数冗余且调用错误
你定义的get_first_name和get_last_name函数里,参数(first_name/last_name)完全没被用到——函数内部直接重新赋值了输入内容,而且调用时传入input(这是内置函数对象)完全没必要,属于无效传参。错误地直接相加函数对象
full_name = get_first_name + get_last_name这行代码是把两个函数本身的对象相加,而不是调用函数后得到的名字字符串。你需要先调用函数(加括号())获取返回的名字,再用+拼接。输入验证逻辑有漏洞
get_first_name里第一次输入后没有检查长度,直接进入循环覆盖输入,导致有效输入也会被重新要求输入;get_last_name里输入无效时只打印提示,但没有重新获取输入,会直接返回空字符串。
修正后的代码
def get_first_name(): # 循环直到获取有效名字 while True: first_name = input('What is your first name? ').strip() if len(first_name) > 0: return first_name print('That is not valid, please try again.') def get_last_name(): # 循环直到获取有效姓氏 while True: last_name = input('What is your last name? ').strip() if len(last_name) > 0: return last_name print('There is no last name, please try again.') # 调用函数获取名字和姓氏 first_name = get_first_name() last_name = get_last_name() # 拼接并打印全名 full_name = first_name + ' ' + last_name print(full_name)
关键说明
- 去掉了函数的冗余参数,让函数逻辑更清晰;
- 用
while True循环实现持续输入验证,直到用户输入有效内容才返回; - 调用函数时通过
get_first_name()和get_last_name()获取返回的字符串,再用+拼接成全名; - 用
.strip()去除输入前后的空白字符,避免用户输入空格被误判为有效内容。
内容的提问来源于stack exchange,提问作者Lauren
相关产品推荐
相关产品推荐

