您的位置:首页 > 编程语言 > Python开发

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

2020-06-30 11:01 113 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐