leecode上的代码到pycharm运行解决历程
1、事情的起因:
小伙伴私聊我说:leecode上的代码到pycharm运行出错了,我一运行的确输出是是list未定义
网络异常,图片无法展示
|
网络异常,图片无法展示
|
2、于是我开始思考这个问题:
为什么在leecode(OJ在线判题系统)上面是对的,在pycharm就出错
这时候我的目光准时到了leecode的第一行代码:
class Solution: def generateMatrix(self, n: int) -> List[List[int]]: 复制代码
3、->的意义:
这个奇怪的符号 -> 在函数定义是什么意思呢?
->常常出现在python函数定义的函数名后面,为函数添加元数据,描述函数的返回类型,从而方便开发人员使用。
比如说:
def add(x, y) -> int: return x+y 复制代码
这里面,元数据表明了函数的返回值为int类型。
这样做的好处:使用预期的类型来注释参数,然后在函数返回值验证时检验参数的类型或者将其强制转换成预期的类型。
4、代码修改部分(leecode59矩阵II)
知道这些我们在代码稍作修改:
class Solution: def generateMatrix(self, n: int): # 初始化要填充的正方形 matrix = [[0] * n for _ in range(n)] left, right, up, down = 0, n - 1, 0, n - 1 number = 1 # 要填充的数字 while left < right and up < down: # 从左到右填充上边 for x in range(left, right): matrix[up][x] = number number += 1 # 从上到下填充右边 for y in range(up, down): matrix[y][right] = number number += 1 # 从右到左填充下边 for x in range(right, left, -1): matrix[down][x] = number number += 1 # 从下到上填充左边 for y in range(down, up, -1): matrix[y][left] = number number += 1 # 缩小要填充的范围 left += 1 right -= 1 up += 1 down -= 1 # 如果阶数为奇数,额外填充一次中心 if n % 2: matrix[n // 2][n // 2] = number return matrix a = Solution() print(a.generateMatrix(3)) 复制代码
5、通用修改模板
#删除 -> List[List[int]]: ,但是不要忘记加 : 哦!(不要问我为什么知道的,呜呜呜) #都是报错带来的血与痛的教训 #后面再加上 #a = 类名() #print(a.函数名(输入的值)) #向这题就打出 a = Solution() print(a.generateMatrix(3)) #大功告成了! 复制代码
6、得到结果
就得到了我们心心念念的结果:
网络异常,图片无法展示
|
7、片尾感谢
文末感谢:叶同学,感谢提问,得以让我们共同学习进步!