python - 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
解决方案
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()
并给用户一个更具体的错误信息
推荐阅读
- c++ - 构建堆的时间复杂度
- bash - 从 Bash 中的字符串末尾删除破折号分隔的数字
- javascript - 如何在输入字段中显示数组值?
- ruby - Nokogiri 使用 .empty 对空字符串返回 False?
- python - 在 Django 3 中过滤搜索 MultiSelectField
- html - 在 WordPress 中修改父子图标
- javascript - firestore部分的访问方式——vuefire
- python - Pandas 过滤分组数据并聚合
- mysql - 使用 MySQL 查找基于国家/地区的销售统计数据
- python - “in”是否与 str.contains() 做同样的事情?