首页 > 解决方案 > Function("last name, first name") 报告:TypeError: can only concatenate str (not "int") to str

问题描述

我需要创建一个函数,该函数接受一个包含“Last_Name,First_Name”格式的名称的字符串,并打印一条欢迎消息,其中包含名字在前,姓在最后,并告诉人们他们名字的长度。该函数应该能够处理错误的输入并打印一条消息:输入格式错误:请使用“Last_Name,First_Name”。以下是我到目前为止所拥有的以及我得到的错误。如果用户以错误的格式输入信息,我无法弄清楚如何创建错误消息:

input_name = input("Enter your name in last name, first name format")
Last_name, First_name =input_name.strip().split(',')
Full_name=First_name + ' ' + Last_name
print(Full_name + ' your first name is ' + len(First_name) + ' letters in length')

TypeError
Traceback (most recent call last)
<ipython-input-14-14516c1daf2c> in <module>()
  2 Last_name, First_name =input_name.strip().split(',')
  3 Full_name=First_name + ' ' + Last_name
----> 4 print(Full_name + ' your first name is ' + len(First_name) + ' letters in length')
TypeError: can only concatenate str (not "int") to str

标签: pythoninput

解决方案


len()返回一个整数 - 要将其与字符串连接,您需要先将其转换为字符串。您可以使用该str()功能来做到这一点。

print(Full_name + ' your first name is ' + str(len(First_name)) + ' letters in length')

要回答这个问题的第二部分:如何告诉用户输入格式错误,可以做一些简单的错误处理。如果输入格式错误,该行

Last_name, First_name =input_name.strip().split(',')

可能会引发某种异常(解包的值太多,解包的值不足等)。所以你可以这样做:

try:
    Last_name, First_name =input_name.strip().split(',')
except:
    print("Input format is wrong")
    sys.exit(1)

当然,还有更强大的方法可以做到这一点。例如,您可以:

1)使用正则表达式检查输入格式

,2)在拆分之前检查输入字符串是否存在

3)检查字符串数组的长度,.split()并给用户一个更具体的错误信息


推荐阅读