def

谈谈少儿编程

十年热恋 提交于 2021-02-02 15:47:01
时下,少儿编程非常火热。网络上不时可以看到各类编程广告,前2天刚看到张泉灵、李开复等大咖都为某少儿编程培训站台代言,市面上各类机器人培训、少儿编程培训也是异常火爆。前不久,工信部推出了中国首个AI等级考试“青少年人工智能技术水平 测试”。可见,知识焦虑已经由中年大叔蔓延到了下一代的少年儿童。 之前,有朋友问我会不会给自己儿子报编程培训?这个答案我目前不好直接回答,一是要看小孩有没兴趣,当然这个可以引导。二是要看有没有合适的培训机构,再好的东西如果没有好的教授者和讲授方法,小孩是不容易接受的。总的来说,小孩的培训应该在轻松前提下,加上兴趣的推动(至少不排斥),如果再能碰上良师+好友,那这个培训就是值得的。 少儿编程,通常针对的是6岁以上,12岁以下(即小学年龄阶段)的儿童。 这个年龄阶段的儿童,已经有了基本的数理逻辑能力,是可塑 性 很强的群体。 因此,单从年龄段上来看, 少儿时期是培养逻辑思维能力的重要时期。 工具上看,目前比较适合少儿学习的工具是scratch。Scratch是一款由麻省理工学院(MIT) 设计开发的一款面向少年的简易编程工具。在2012年在中国得到普及,2013在上海举行比赛。针对 8 岁以上孩子们的认知水平,以及对于界面的喜好,MIT 做了相当深入研究和颇具针对性的设计开发。对于这款软件,我没有深入去使用过,仅在网页上做了粗粗的了解。 下面

为什么说 Python 内置函数并不是万能的?

梦想与她 提交于 2021-02-02 12:47:04
点击蓝色“ Python空间 ”关注我丫 加个“ 星标 ”,每天一起快乐的学习 作者:豌豆花下猫 来源:Python猫 在 Python猫 的 上一篇文章 中,我们对比了两种创建列表的方法,即字面量用法 [] 与内置类型用法 list(),进而分析出它们在运行速度上的差异。 在分析为什么 list() 会更慢的时候,文中说到它需要经过名称查找与函数调用两个步骤,那么,这就引出了一个新的问题: list() 不是内置类型么,为什么它不能直接就调用创建列表的逻辑呢?也就是说,为什么解释器必须经过名称查找,才能“认识”到该做什么呢? 其实原因很简单:内置函数/内置类型的名称并不是关键字,它们只是解释器内置的一种便捷功能,方便开发者开箱即用而已。 PS:内置函数 built-in function 和内置类型 built-in type 很相似,但 list() 实际是一种内置类型而不是内置函数。我曾对这两种易混淆的概念做过辨析,请查看 这篇文章 。为了方便理解与表述,以下统称为内置函数。 1、内置函数的查找优先级最低 内置函数的名称并不属于关键字,它们是可以被重新赋值的。 比如下面这个例子: # 正常调用内置函数 list(range( 3 )) # 结果:[0, 1, 2] # 定义任意函数,然后赋值给 list def test (n) : print( "Hello World!"

为什么说 Python 内置函数并不是万能的?

假装没事ソ 提交于 2021-02-02 12:46:44
△点击上方 “ Python猫 ”关注 ,回复“ 1 ”领取电子书 作者:豌豆花下猫 来源:Python猫 在 Python猫 的 上一篇文章 中,我们对比了两种创建列表的方法,即字面量用法 [] 与内置类型用法 list(),进而分析出它们在运行速度上的差异。 在分析为什么 list() 会更慢的时候,文中说到它需要经过名称查找与函数调用两个步骤,那么,这就引出了一个新的问题: list() 不是内置类型么,为什么它不能直接就调用创建列表的逻辑呢?也就是说,为什么解释器必须经过名称查找,才能“认识”到该做什么呢? 其实原因很简单:内置函数/内置类型的名称并不是关键字,它们只是解释器内置的一种便捷功能,方便开发者开箱即用而已。 PS:内置函数 built-in function 和内置类型 built-in type 很相似,但 list() 实际是一种内置类型而不是内置函数。我曾对这两种易混淆的概念做过辨析,请查看 这篇文章 。为了方便理解与表述,以下统称为内置函数。 1、内置函数的查找优先级最低 内置函数的名称并不属于关键字,它们是可以被重新赋值的。 比如下面这个例子: # 正常调用内置函数 list(range( 3 )) # 结果:[0, 1, 2] # 定义任意函数,然后赋值给 list def test (n) : print( "Hello World!" )

leetcode-888. 公平的糖果交换

浪尽此生 提交于 2021-02-02 12:45:13
爱丽丝和鲍勃有不同大小的糖果棒: A[i] 是爱丽丝拥有的第 i 块糖的大小, B[j] 是鲍勃拥有的第 j 块糖的大小。 因为他们是朋友,所以他们想交换一个糖果棒,这样交换后,他们都有相同的糖果总量。 (一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。) 返回一个整数数组 ans ,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小, ans[1] 是 Bob 必须交换的糖果棒的大小。 如果有多个答案,你可以返回其中任何一个。保证答案存在。 示例 1: 输入:A = [1,1], B = [2,2] 输出:[1,2] 示例 2: 输入:A = [1,2], B = [2,3] 输出:[1,2] 示例 3: 输入:A = [2], B = [1,3] 输出:[2,3] 示例 4: 输入:A = [1,2,5], B = [2,4] 输出:[5,4] 提示: 1 <= A.length <= 10000 1 <= B.length <= 10000 1 <= A[i] <= 100000 1 <= B[i] <= 100000 保证爱丽丝与鲍勃的糖果总量不同。 答案肯定存在。 思路:   题目描述的比较有意思,并不难理解,我们只需要找到A拥有的任意一个糖果的大小减去 (sum(A) - sum(B) // 2) 出现在B拥有的糖果的大小中即可。 代码: class Solution

酷!一个仿漫画手绘风格的 Python 图表库

天涯浪子 提交于 2021-02-02 11:53:00
【导读】:关于数据可视化工具,如果你有点厌烦了常见风格(比如: Matplotlib 和 pyecharts ),那可以试试换一种风格。 本文前哨君给大家介绍一个风格完全不一样的开源库: cutecharts ,其 UI 效仿 XKCD 漫画风格,在部分场景(比如:个人作品展示)的效果或许会更好。 补充:XKCD 是一个 IT 漫画网站,在国外非常有名气。 为什么会有 cutecharts? 据 cutecharts 的开发者介绍,他个人非常喜欢一个 JS 图表库 chart.xkcd ,但它支持的图表类型不多,比 pyecharts 少很多。 Javascript 在数据交互和视觉效果上更有优势,而 Python 是一种深受数据科学界的喜爱的语言。因此,他想结合这两种技术的力量,于是就开发了 cutecharts.py。 此外,cutecharts 更多的是一个库,用来学习如何将 Javascript 世界与 Python/notebook 相结合。cutecharts 的项目结构与 pyecharts 相同,它支持 pyechart s的所有核心功能,同时更轻量级,总体上也更简洁。 GitHub 地址: https://github.com/chenjiandongx/cutecharts 简单使用 一行命令先安装好该库: pip install cutecharts 下面就是

OpenCV-几何变换-移动、旋转、仿射变换

半腔热情 提交于 2021-02-02 10:00:56
OpenCV 提供了两个变换函数, cv2.warpAffine 和 cv2.warpPerspective ,使用这两个函数你可以实现所有类型的变换。 cv2.warpAffine 接收的参数是2 × 3 的变换矩阵,而 cv2.warpPerspective 接收的参数是 3 × 3 的变换矩阵。 扩展缩放    方法: resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)      dsize 为缩放大小          fx,fy 为影响因子      interpolation 为插值算法(在缩放时推荐使用 cv2.INTER_AREA ,在扩展时推荐使用 cv2.INTER_CUBIC (慢) 和 cv2.INTER_LINEAR 。默认情况下所有改变图像尺寸大小的操作使用的插值方法都是 cv2.INTER_LINEAR ) 1 import numpy as np 2 import cv2 3 4 img1 = cv2.imread( " ../image/min.jpg " ) 5 6 # 方式一 7 img2 = cv2.resize(img1, None, fx=2, fy=2, interpolation= cv2.INTER_CUBIC) 8 9 # 方式二 10 height

为什么说 Python 内置函数并不是万能的?

给你一囗甜甜゛ 提交于 2021-02-02 08:24:04
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨豌豆花下猫 来源丨Python猫 1、内置函数的查找优先级最低 内置函数的名称并不属于关键字,它们是可以被重新赋值的。 比如下面这个例子: # 正常调用内置函数 list(range(3)) # 结果:[0, 1, 2] # 定义任意函数,然后赋值给 list def test(n): print("Hello World!") list = test list(range(3)) # 结果:Hello World! 在这个例子中,我们将自定义的 test 赋值给了 list,程序并没有报错。这个例子甚至还可以改成直接定义新的同名函数,即"def list(): …"。 这说明了 list 并不是 Python 限定的关键字/保留字。 查看官方文档,可以发现 Python3.9 有35个关键字,明细如下: 如果我们将上例的 test 赋值给任意一个关键字,例如"pass=test",就会报错:SyntaxError: invalid syntax。 由此,我们可以从这个角度看出内置函数并不是万能的: 它们的名称并不像关键字那般稳固不变,虽然它们处在系统内置作用域里,但是却可以被用户局部作用域的对象所轻松拦截掉!

栈特点使用:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是...

亡梦爱人 提交于 2021-02-02 06:01:33
题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 /* * * @param {string} s * @return {boolean} */ var isValid = function (s) { if (s==" "||s=="" ){ return true ; } let stack = []; let left = ["{","(","[" ]; let right = ["}",")","]" ]; for (let i =0;i<s.length;i++ ){ if (left.indexOf(s[i])>-1 ){ stack.push(s[i]); } else if (s[i] === " " ){ continue ; } else { if (stack.pop() != left[right.indexOf(s[i])] ){ return false ; } } } if (stack.length!=0 ){ return false ; } return true ; }; 这里主要是使用了栈的先进后出的特点,遍历s字符串,当遇到左括号的时候就将左括号进栈

python UI自动化测试

筅森魡賤 提交于 2021-02-02 05:59:23
为了减小维护成本:   1.UI自动化测试需要有较为稳定的环境   2.代码设计合理,那么我们就需要面向对象的设计一个框架,将重复的代码模块化 一、首先总结一下 UI自动化大概要哪些模块   1.config(配置文件):用来存放配置文件(YML,XML,HTML。。。)   2.data(数据文件):存放测试数据等   3.drivers(驱动):Chromedriver,IEdriver   4.log(日志文件):打印测试log   5.report(报告):生成HTML测试报告   6.test(测试用例):写TestCase调用其他模块中的方法   7.utils(公共方法):写调用config、data、log、report等其他模块的方法   8.后续可自己增加其他模块,比如针对某类型元素的获取,page中元素的定位等 二、结合起来运用   首先如果我们没有框架的话, 写一个testcase可以直接写到一个class中,甚至不用class,甚至连def都可以不用就实现了一个case; 但是,万一下次又用到了同样的功能,需要写同样的内容怎么办呢???甚至它和之前的case只有一点点不一样的话呢???我们需要不断的复制粘贴并且修改; 那么我们这里需要用到class来实现不同模块之间的调用   1、我们需要在utils方法中写入一些基本方法,实现对其他模块的调用   1)

python3之Django表单(一)

左心房为你撑大大i 提交于 2021-02-02 05:29:51
1、HTML中的表单 在HTML种,表单是在<form>...</form>种的元素,它允许用户输入文本,选择选项,操作对象等,然后发送这些数据到服务器 表单元素允许用户在表单种输入内容如,文本域(textarea)、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等。 大多数情况下被用到的表单标签是输入标签(<input>),输入类型是由类型属性(type)定义的,大多数经常被用到的输入类型下面做简单介绍: (1)文本域(Text Fields) 文本域通过<input type="text">标签来设定,当用户要在表单种输入字母,数字等内容是,就会用到文本域,在大多数浏览器种,文本域的缺省宽度是20个字符: < form > 姓名: < input type ="text" name ="username" >< br > </ form > (2)密码字段 密码字段通过标签<input type="password">来定义,密码字段字符不会明文显示,而是以星号或圆点替代: < form > 姓名: < input type ="text" name ="username" >< br > 密码: < input type ="password" name ="password" > </ form > (3)单选按钮(Radio Buttons