写点什么

leecode 上的代码到 pycharm 运行解决历程

作者:武师叔
  • 2022 年 5 月 04 日
  • 本文字数:1119 字

    阅读完需:约 4 分钟

leecode上的代码到pycharm运行解决历程

​​

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 matrixa = Solution()print(a.generateMatrix(3))

复制代码


点击并拖拽以移动

5、通用修改模板

 #删除  -> List[List[int]]:    ,但是不要忘记加 : 哦!(不要问我为什么知道的,呜呜呜)#都是报错带来的血与痛的教训#后面再加上#a = 类名()#print(a.函数名(输入的值))#向这题就打出a = Solution()print(a.generateMatrix(3))#大功告成了!
复制代码


点击并拖拽以移动

6、得到结果

就得到了我们心心念念的结果:



点击并拖拽以移动

7、片尾感谢

文末感谢:叶同学,感谢提问,得以让我们共同学习进步!


发布于: 刚刚阅读数: 5
用户头像

武师叔

关注

每天丰富自己,去过自己想要的生活! 2022.04.28 加入

一个喜欢最新技术,研发的人工智能专业的大二学生,用自己的代码做一些有意义的事情! 目前大二结束有去大厂研发岗实习的计划,每天丰富自己的技术,去过自己想要的实习生活。

评论

发布
暂无评论
leecode上的代码到pycharm运行解决历程_武师叔_InfoQ写作社区