Python: [TypeError] bad operand type for unary - : ´str´ 解决方法

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版权协议,转载请附上原文出处链接和本声明。