TypeError: bad operand type for unary - : ´str´
数组中的第K个最大元素
原题为 : 寻找数组中的第K个最大元素:
输入:nums = [2,3,17,0,-2,5] 和 k = 2
返回:5
报错
这里不讨论堆排序等空间复杂度较低的算法,仅仅用最简单的排序返回时会报错:
def Solution(nums , k) -> int:
return sorted(nums)[-k]
num = input('num: ?')
k = input('Index: ?')
print(Solution(num,k))
会产生报错:
TypeError: bad operand type for unary -: 'str'
根据报错的内容,是return 中的 “-k” 的符号判断成了字符类型,我们输出 k的类型:
print(type(k))
它的输出是:<class 'str'>
,自此可以判断是k的输入类型导致sorted函数下标报错。
解决方案
对 k 的输入进行强制类型转换:
k = int(input('Index: ?'))
再次测试没问题:
num: ?2,3,17,0,-2,5
Which: ?2
5
版权声明:本文为Lacnce_96原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。