BUG描述:

使用python在leetcode中完成题目的过程后,在自己本地环境运行代码出错,代码如下:

class Solution(object):
    def minPatches(self, nums: List[int], n: int) -> int:
        x=1 #[0,x-1]就是当前可覆盖的范围,从[0,0]开始。
        patchNum=0 #需要填补的数的个数
        index=0 #目前遍历到数组的第几个元素
        leng=len(nums) #数组的长度 
        #测试的时候可能给一个空数组,要考虑到这个情况!
        if leng==0 and index==0:
            if n==0: #如果输入的n为0,则返回0
                return 0
            else: #如果给了一个空的数组,那么我们一定要加入1,此时可以覆盖[0,1],所以x变成2
                nums.append(1)
                patchNum+=1
                x=2
        while x<=n:
            if  index<leng and nums[index]<=x:
                x+=nums[index]
                index+=1
            else:   
                patchNum+=1
                x+=x
        return patchNum

nums=[1,3]
n=6
print(Solution().minPatches(nums,n))

报错如下:

NameError: name 'List' is not defined

解决方式:

只需要在头部导入typing库即可

from typing import List

 

python是一门弱类型的语言,使用过程不用过多关注变量的类型,系统在许多时候会自动根据需要分配或者变更变量的数据类型。但是这样会导致在数据类型的辨识上出现偏差,我们自己都不一定记得当初想传什么类型的变量进来或出去....因此在python3.5之后,引入了一个typing模块。

在定义函数的时候,定义输入和输出的数据类型。比如我希望输入的nums是一个int的数组,n是一个int,最终函数返回值也是int.

typing常用类型

  • int, long, float: 整型,长整形,浮点型;

  • bool,str: 布尔型,字符串类型;

  • List, Tuple, Dict, Set:列表,元组,字典, 集合;

  • Iterable, Iterator:可迭代类型,迭代器类型;

  • Generator:生成器类型;

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐