您好我无法将由“space”分隔的字符串转换为for循环的列表。 显示运行时错误:AttributeError:'NoneType'对象没有属性'sorted'
#The code is to get the second highest number
n = int(input())
arr = map(int, input().split()) # this is a string
arr_list = []
for i in range(n):
arr_list = arr_list.append(arr)
arr_list = arr_list.sorted()
arr_set = set(arr_list)
if len(arr_list) > 1:
print(list(arr_set)[-2])
else:
print(arr_list[0])
答案 0 :(得分:0)
arr_list.append(arr)
将arr
追加到arr_list
并返回None
,因此:
arr_list = arr_list.append(arr)
==> arr_list = None
arr_list.sorted() => None.sorted()
==> AttributeError: 'NoneType' object has no attribute 'sorted'
此外,要使用sorted
对列表进行排序,请使用sorted(list)
代替list.sorted()
。
要将字符串转换为列表,您应该执行以下操作:
arr = list(map(int, input().split())) # this is a list
答案 1 :(得分:0)
你有很多错误,但可以简化为:
arr = sorted(set(map(int, input('Enter space-separated numbers: ').split())))
if len(arr) > 1:
print(arr[-2])
else:
print(arr[0])
map()
返回一个地图对象。 set
通过迭代地图创建唯一值。 sorted()
将它们整理好。
代码中的原始错误是:
arr_list = arr_list.append(arr)
arr_list = arr_list.sorted()
arr_list.append()
是就地操作并返回None
,然后将其分配给arr_list
。 None
没有.sorted()
方法。