由于整数错误导致的列表输出中的Python错误



感谢那些早些时候给我解决方案的人。然而,我需要利用分割功能的解决方案,作为其要求的一部分。当我运行这段代码时,有一个错误


TypeError Traceback(最近一次调用)在7在dob_list中输入x:——比;9岁+ = [year-int (x.split("产生绯闻)[1:]))10打印(年龄)

TypeError: int()参数必须是字符串、类字节对象或数字,而不是'list'

dob_list = ['01-Jan-1990', '11-Aug-1995', '15-Apr-1982', '20-Mar-1988', '25-Nov-1976', '07-Dec-1965', 
'18-Dec-1977', '25-May-1994', '09-Oct-1981', '19-Feb-1981']

year = 2021
age =[]
dob = []
for x in dob_list:
age +=[year-int(x.split("-")[-1:])]
print(age)

x.split("-")[-1:]实际上给了您一个仅包含最后一个列表项的列表,因为您使用的是范围(如[-1:])而不是数字(如[-1])。

x.split("-")[-1]将最后一个列表项(来自x.split("-"))作为字符串给出。

python中排名第一的调试工具是print。线路不通?把这一行的内容打印出来,看看你得到了什么。

dob_list = ['01-Jan-1990', '11-Aug-1995', '15-Apr-1982', '20-Mar-1988', '25-Nov-1976', '07-Dec-1965', 
'18-Dec-1977', '25-May-1994', '09-Oct-1981', '19-Feb-1981']

year = 2021
age =[]
dob = []
for x in dob_list:
print("next value", repr(x.split("-")[-1:]))
age +=[year-int(x.split("-")[-1:])]

运行,我得到

$ python3 test.py
next value ['1990']
Traceback (most recent call last):
File "/home/td/tmp/j/i.py", line 12, in <module>
age +=[year-int(x.split("-")[-1:])]
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

那个回溯是有用的。我看到了失败行,它告诉我int()不喜欢列表。向后看…是的,那是一个正在传递的名单。直接获取最终值。

age +=[year-int(x.split("-")[-1])]

最新更新