-
python三个箭头怎么打出来_如何用箭头键在Python 3中移动海龟
2020-12-09 12:01:57代码并不理想,但它可以工作,您可以对其进行处理。你必须意识到,乌龟的位置不好,你必须调整它。这就是为什么我在设置方法我的乌龟抬头。现在,您必须记住,right(deg)和left(deg)方法说的是“请在给定方向上以...我有解决办法给你。代码并不理想,但它可以工作,您可以对其进行处理。你必须意识到,乌龟的位置不好,你必须调整它。这就是为什么我在设置方法我的乌龟抬头。
现在,您必须记住,right(deg)和left(deg)方法说的是“请在给定方向上以这样的程度旋转”。
所以记住,你最后的方向是什么。
理解这一点的关键是,您在这里无法访问任何绝对值。你只能根据你现在的位置改变一些东西。所以,你不能左转,但如果你知道前一个方向,你知道多少度,你应该把你的乌龟真正左转。
我的工作代码是:import turtle
wn = turtle.Screen()
last_pressed = 'up'
def setup(col, x, y, w, s, shape):
turtle.up()
turtle.goto(x,y)
turtle.width(w)
turtle.turtlesize(s)
turtle.color(col)
turtle.shape(shape)
turtle.lt(90)
turtle.down()
wn.onkey(up, "Up")
wn.onkey(left, "Left")
wn.onkey(right, "Right")
wn.onkey(back, "Down")
wn.onkey(quitTurtles, "Escape")
wn.listen()
wn.mainloop()
#Event handlers
def up():
global last_pressed
if last_pressed == 'left':
turtle.rt(90)
turtle.fd(10)
elif last_pressed == 'right':
turtle.lt(90)
turtle.fd(10)
elif last_pressed == 'up':
turtle.fd(10)
else:
turtle.rt(180)
turtle.fd(10)
last_pressed = 'up'
def left():
global last_pressed
if last_pressed == 'left':
turtle.fd(10)
elif last_pressed == 'right':
turtle.lt(180)
turtle.fd(10)
elif last_pressed == 'up':
turtle.lt(90)
turtle.fd(10)
else:
turtle.rt(90)
turtle.fd(10)
last_pressed = 'left'
def right():
global last_pressed
if last_pressed == 'left':
turtle.rt(180)
turtle.fd(10)
elif last_pressed == 'right':
turtle.fd(10)
elif last_pressed == 'up':
turtle.rt(90)
turtle.fd(10)
else:
turtle.lt(90)
turtle.fd(10)
last_pressed = 'right'
def back():
global last_pressed
if last_pressed == 'left':
turtle.lt(90)
turtle.fd(10)
elif last_pressed == 'right':
turtle.rt(90)
turtle.fd(10)
elif last_pressed == 'up':
turtle.rt(180)
turtle.fd(10)
else:
turtle.fd(10)
last_pressed = 'down'
def quitTurtles():
wn.bye()
setup("blue",-200,200,2,2,"turtle")
请记住,海龟要花一些时间才能真正转动,所以不要按键,点击它们。
我认为你可以更进一步。
-
键盘向上箭头代码中怎么表示_知识能量站||键盘快捷键使用秘籍
2020-12-12 13:51:47作为一名信工学子日常与电脑打交道是少不了的上次学习了键盘基本知识这一次就让小工和大家一起学习一下常用的电脑键盘快捷键吧!为什么会有快捷键在电脑上有一些操作虽然不复杂但繁琐而使用电脑快捷键就能大大减少...作为一名信工学子
日常与电脑打交道是少不了的
上次学习了键盘基本知识
这一次
就让小工和大家一起
学习一下
常用的电脑键盘快捷键吧!
为什么会有快捷键
在电脑上
有一些操作
虽然不复杂但繁琐
而使用电脑快捷键
就能大大减少无用操作
提高操作速度
常用电脑快捷键
Ctrl+C/V
万能的复制粘贴,可能是大家最熟悉的快捷键了吧,小工写论文时,它可是帮了很大的忙呢~
Ctrl+Z
人生没有后悔药,但电脑上有,撤销键就是快捷键里的后悔药。当你不小心操作错误时,轻点ctrl+z,又退回到了操作之前。
Windows+L
这个可以用在有事需短时间离开又不希望别人乱动你电脑的时候,离开前按一下Windows+L,直接锁屏,就不用担心资料外泄了。
Ctrl+Tab/w
现在很多软件,比如IE,谷歌等,都是在同一个窗口打开多个页面。有时候需要迅速切换多个页面,怎么操作?用鼠标挨个点击?太麻烦了!小工教你一招,点击ctrl+tab,轻松实现页面切换,点击ctrl+W,就可以关闭当前页面。
Windows+E
在我们的日常生活中,经常需要打开电脑中的文件,一般人都会先找到“此电脑”,再点击打开,而有的人桌面上图标特别多,找起来很困难,这个时候只需要轻轻按住Windows键,再点击E键,资源管理器就直接打开了,是不是很方便呢?
Windows+Tab
这个快捷键看起来挺高级的,按下Windows键再按Tab键,就可以显示各个切换窗口啦,之前关闭的窗口也会显示,再也不用一个个去找了。
Ctrl+Alt+Delete
诶,电脑又卡住了,窗口一直关不了怎么办?别怕,小工教你,点击Ctrl+Alt+Delete打开任务管理器,就可以结束一些卡住无法关闭的程序了。
Windows+上/下方向键
在电脑使用过程中,经常需要对程序窗口大小进行调整,你当然可以使用鼠标操作,但有更便捷的方法为什么不用呢?点击Windows+向下箭头可以还原到原始窗口,按住Windows键再按向上箭头则可以将窗口最大化,最重要的,在原始窗口下点击Windows+向下箭头可以将窗口最小化。
Ctrl+Shift+T
不小心手抖将正在浏览的网页关闭了怎么办?不用担心,一个小操作,小工教你恢复原页面。点击Ctrl+Shift+T试试?看,页面恢复了!
同学
小工小工,快捷键只有这些吗?
当然不是,我再告诉你一些比较常用的快捷键吧!
小工
点此查看更多
致各位热爱学习的小可爱:
Ctrl+X 剪切
Ctrl+A 全选
Ctrl+S 保存
Ctrl+Y 恢复
Ctrl+F 查找
Ctrl+F5 刷新
Ctrl+小键盘'+' 放大
Ctrl+小键盘'-' 缩小
Ctrl+小键盘'*' 恢复原始大小
Ctrl+Shift 输入法切换
Shift+Delete 永久删除
Alt+F4 关闭
Alt+Enter 属性
ALT+空格键 菜单
ALT+TAB 切换
Ctrl+Alt+S 自动保存
好了
本期知识分享到此结束
想要了解更多内容
请继续关注小工吧!
小工
带给你更多精彩!
END
END
编辑:吴佳欣
审核:巩文文 马婧翌
图片来源:新媒体中心
微信公众号:Ecut_ies
扫码关注
了解更多知识
微信号|Ecut_ies
你的好友信小工拍了拍你
并请你帮她点一下“分享”
-
让我们来康康怎么用idea搭建起一个Javaweb项目
2020-03-03 16:20:03让我们来康康怎么搭建起一个Javaweb项目 老规矩,放图! 在红色的框框里输入你为这个...把红色圈起来的部分的代码打在web.xml里 在红框中最后一行代码中间加上hello 连续两个ok它 然后跟着箭头走 Ok它 就完成啦 ...让我们来康康怎么用idea搭建起一个Javaweb项目
1、下载相关的jar包
让我们先来下载一个serviet.api.jar
后面我们会用到的2、创建项目
老规矩,放图!
在红色的框框里输入你为这个程序起的名字
打开查看我们的web.xml
点击src,右键它,创建一个Java Class
这个Name也是随你喜欢,但是记得遵循类名规则。
3、在idea项目中加入相关的jar包
点击Modules再点击+号,然后选第一个
在你的文件中找到serviet.api.jar
然后ok它
我们接着跟着箭头走将箭头指向处勾起来 然后🆗它
4、配置xml
把红色圈起来的部分的代码打在web.xml里
在红框中最后一行代码中间加上hello
红框中的代码是:
<servlet> <servlet-name>Hello</servlet-name> <servlet-class>Hello</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
5、在idea项目中添加Tomcat
打完上面的代码我们继续跟着箭头走
右上角点击这里
然后点击Deployment
接着点击加号
然后选择第一个
照着图中箭头找到tomcat
连续两个ok它
然后跟着箭头走将红框里的_war_exploded去掉就可
Ok它 就完成啦
然后就可以开始愉快的在刚刚建的类里打代码啦6、温馨提示
打开我们的xml
-
从零构建前后分离的web项目:前端实战 - 继续打磨前端架构
2020-11-30 10:52:05每一章的代码单独发布在我的 <em>Github</em> 博客,不进行覆盖更新 [除非代码有错误进行修改],这样避免了 <em>2019</em> 年小明同学望着前两章和 <em>Github</em> 最终版本代码发呆 ( <em>release... -
element后台管理系统代码_打造vuecli3+element后台管理系统(五)几个小技巧
2020-12-30 11:41:25会发现他甩了一堆兼容性bug给你,在ie中打不开页面啦、在360浏览器火狐ie布局混乱啦、输入框怎么有难看的黄色背景啦、电话输入框怎么有丑陋的箭头啦、字体溢出了啦等等等等...在开发时我们都习惯在google浏览器进行...当你的后台系统写好,给测试大大验收的时候。会发现他甩了一堆兼容性bug给你,在ie中打不开页面啦、在360浏览器火狐ie布局混乱啦、输入框怎么有难看的黄色背景啦、电话输入框怎么有丑陋的箭头啦、字体溢出了啦等等等等...
在开发时我们都习惯在google浏览器进行调试,总所周知,google浏览器的对css3、html5、es6等的支持是完全没有问题的,所以我们会忽略了其实在其他浏览器对这些新特性不够支持的问题,下面介绍我在开发后台系统中使用的一些插件和一些小技巧,来让你的后台系统尽可能多的向下向外兼容多版本浏览器~
一、用rem代替px
许多后台系统都要求要做成响应式的,虽然我们用的elementUI框架已经在响应式上面做了出色的处理,但是也只能解决一部分的问题。所以我们需要使用rem。
1.1 什么是rem
rem是CSS3新增的相对长度单位,是指相对于根元素html的font-size计算值的大小。简单可理解为屏幕宽度的百分比。
但是!但是!问题来了,那就是我们其实用px开发习惯了,要改成rem一时半会缓不过来,加上还要换算是吧。所以用rem还挺烦的。接下来主角就登场了,安利大家几个插件,能够将你项目中的px转换成rem,还可以自定义换算基数等。
1.2 使用lib-flexible & px2rem自动转换px为rem,解决响应式问题
1.2-1 引入lib-flexible 和 px2rem
npm install --save lib-flexiblenpm install --save-dev px2rem-loader postcss-plugin-px2rem复制代码
postcss-plugin-px2rem 是为了在使用less或者sass的情况下也可以正常转换
1.2-2 删除或注释index.html中的 标签
使用lib-flexible插件,他会自动生成meta name="viewport"的标签,所以我们需要把原来有的删除掉。自动生成标签之后,lib-flexible会自动设置html的font-size为屏幕宽度除以10,也就是1rem等于html根节点的font-size,如果你的设计稿宽度是750px,那font-size就会被设置为75px
vuecli3-ele-admin-template We're sorry but vuecli3-ele-admin-template doesn't work properly without JavaScript enabled. Please enable it to continue. 复制代码
1.2-3 入口文件引入lib-flexible
在main.js全局引入lib-flexible
// 使用lib-flexible来解决移动端适配import 'lib-flexible'复制代码
1.2-4 新增配置
在vue.config.js新增px2rem的配置
const path = require('path')function resolve(dir) { return path.join(__dirname, dir)}module.exports = { publicPath: '/', outputDir: 'dist', // 输出文件目录 assetsDir: 'assets', // 静态资源文件夹 productionSourceMap: false, devServer: { port: 9566, // 端口号 open: true, proxy: null // 设置代理 }, // 新增内容 css: { loaderOptions: { sass: { // 如果用的是less就改成less javascriptEnabled: true }, postcss: { plugins: [ require('postcss-plugin-px2rem')({ rootValue: 54, // 换算基数,默认100,自行根据效果调整。 mediaQuery: false, // (布尔值)允许在媒体查询中转换px。 minPixelValue: 3 // 设置要替换的最小像素值默认0,这里表示大于3px会被转rem。 }) ] } } }, // 新增结束 chainWebpack: config => { // 新增内容 config.module .rule('css') .test(/.css$/) .oneOf('vue') .resourceQuery(/?vue/) .use('px2rem') .loader('px2rem-loader') .options({ remUnit: 54 }) // 新增结束 config.module .rule('svg') .exclude.add(resolve('src/icons')) .end() config.module .rule('icons') .test(/.svg$/) .include.add(resolve('src/icons')) .end() .use('svg-sprite-loader') .loader('svg-sprite-loader') .options({ symbolId: 'icon-[name]' }) }}复制代码
1.2-5 康康postcss-plugin-px2rem的配置项
官方文档给出的配置项有这么多:
{ rootValue: 100, unitPrecision: 5, propWhiteList: [], propBlackList: [], exclude:false, selectorBlackList: [], ignoreIdentifier: false, replace: true, mediaQuery: false, minPixelValue: 0}复制代码
我们目前只用到了三个 那么这些都是啥意思呢,一起来康康
- rootValue 转换基数,类型可以是Number也可以是Object,默认是100
- 如果你传的是一个Object,例如 { px: 50, rpx: 100 } ,那么就意味着,在换算的时候,如果遇上单位是px那换算基数是50,如果遇上rpx那么换算基数是100
- unitPrecision 单位精度,Number类型,简单的说就是转换之后的rem要保留几位小数,默认保留5位的哈
- propWhiteList 转换的白名单,Array类型,里面包含了可以被转换的css属性
- 默认是个空数组哦, 意思就是不用呗,就是说css里所有的属性,都可以进行转换
- 里面的属性值必须精确匹配,使用了白名单之后,意味着只有白名单里头的属性可以转换了。感觉这个白名单会比较少用到的说
- propWhiteList 转换的黑名单,和白名单相反嘛,黑名单里头的css属性是不会进行转换的
- exclude 排除的文件夹,是正则表达式。比如说写了/(node_module)/,就是说(node_module)中的样式文件不进行替换,这文件夹里能有啥,就是你引的插件嘛。排除这个文件夹的意思就是不对你引入的UI框架的样式进行单位转换。
- selectorBlackList 选择器黑名单,Array类型。和上面那个属性黑名单大同小异,不同的是这里忽略转换的依据是css选择器。
- 如果是['body'],数组元素是单纯的字符串,意思就是排除class为body的转换,即忽略.body下的所有属性的转换。
- 如果是[/^body$/]酱的,数组元素是一个正则表达式,他排除的就是body标签,即忽略body标签下的所有属性的转换。
- ignoreIdentifier 默认是false,也可以是String类型,当是某个css属性名的时候,意思就是忽略这个属性的转换。如果你想忽略的属性只有那么一个,而不是一连串的时候,就可以用它。当启用这个的时候,replace会自动变成true的哈
- replace 默认是true,Boolean类型,表示直接替换包含REM的规则,而不是添加回调函数
- mediaQuery Boolean类型,默认是false,表示是否允许在@media查询中进行转换
- minPixelValue Number类型,表示开始转换的最小值,默认是0,意思就是大于0px的长度都进行转换
细心的小伙伴发现我这里的rootValue转换基数设置的是54,为什么涅?你运行项目,然后F12,会发现根元素html的font-size是54px。为什么!为什么明明前面说的是宽度除以10啊,我特喵的pc端宽度是1080啊,不应该是font-size:108px么???想知道答案的小伙伴就要去看看伟大的lib-flexible的源码啦,lib-flexible里头有这么一段代码:
function refreshRem(){ var width = docEl.getBoundingClientRect().width; if (width / dpr > 540) { width = 540 * dpr; } var rem = width / 10; docEl.style.fontSize = rem + 'px'; flexible.rem = win.rem = rem;}复制代码
pc端的dpr是1,width / dpr肯定是大于540的,所以lib-flexible会默认使用540px这个宽度,然后将屏幕宽度除以10作为rem值,所以1rem = 54px。所以我们将rootValue转换基数设为54刚刚好
康康添加了lib-flexible & px2rem之后,页面在移动端的显示效果如何:
好的,十分优秀。
二、解决低版本ie打不开页面的问题
当你写完后台系统之后,毛闷台了喔,在线上把代码一拉一部署,测试那边说了,你这个页面我浏览器打不开啊!你过去之后发现他用的ie不知道6还是7还是8测得你的网站。那么问题来了,为什么会打不开呢?
原因就是你的项目里头用了es6的promise,ie低版本对这个的支持不是特别好,这个问题很好解决,只需要引入两个插件就可以了。对本身代码没有其他影响。
2.1 引入es6-promise & 和babel-polyfill依赖包
npm install --save es6-promise babel-polyfill复制代码
2.2 在入口文件main.js引入
// 解决低版本浏览器不支持promise问题import 'babel-polyfill'import Es6Promise from 'es6-promise'Es6Promise.polyfill()复制代码
2.3 在vue.config.js新增配置
// 。。。此处省略n个字符。。。 config.module .rule('icons') .test(/.svg$/) .include.add(resolve('src/icons')) .end() .use('svg-sprite-loader') .loader('svg-sprite-loader') .options({ symbolId: 'icon-[name]' }) // 新增配置 config.entry.app = ['babel-polyfill', './src/main.js'] // 新增结束 }}复制代码
三、使用autoprefixer让css属性自动增加兼容前缀
很多时候,像flexBox或者transform这样样式,在不同浏览器下面有不同的写法,正常来说我们每次用到其中一个的时候都需要写这么长一大串:
复制代码
晕,我只是想要用一下flex布局啊。。
经过评论区小伙伴的提醒,这里有一个很棒的插件可以使用,他可以自动给你的项目增加兼容前缀,需要添加的浏览器兼容前缀由你自由配置。我们只需:
3.1安装autoprefixer依赖
cnpm install --save-dev autoprefixer复制代码
3.2在vue.config.js引入
// ...省略前面省略css: { loaderOptions: { sass: { // 如果用的是less就改成less javascriptEnabled: true }, postcss: { plugins: [ // 新增内容 require('autoprefixer')({}), // 新增结束 require('postcss-plugin-px2rem')({ rootValue: 54, // 换算基数,默认100,自行根据效果调整。 mediaQuery: false, // (布尔值)允许在媒体查询中转换px。 minPixelValue: 3 // 设置要替换的最小像素值默认0,这里表示大于3px会被转rem。 }) ] } } }, // ...省略后面省略复制代码
3.3 在package.json中指定browserslist关键字
在package.json中新增
"browserslist": [ "> 1%
-
python语法syntaxerror怎么修改-Python 语法错误
2020-11-01 12:09:16说明Python 教程正在编写中,欢迎大家加微信 sinbam 提供意见、建议、纠错、催更。...如何查看如以下代码,字符串少打了半个引号,会抛出SyntaxError等, 并告知错误内容,并将箭头指向错误发生的位置。print('h... -
Visual Studio程序员箴言中文扫描PDF
2010-12-28 01:04:18技巧5.7 双击“输出”窗口中的消息直接跳到代码中对应的位置 106 技巧5.8 使用键盘跳至“输出”窗口内的不同窗格 106 技巧5.9 在生成期间停止“输出”窗口的显示 107 技巧5.10 在“输出”窗口启用自动换行 ... -
特殊符号的拼打法
2008-07-09 11:14:00特殊符号的拼打法 韩版魔的特殊符号拼打法最近在网上冲浪是看到:论坛、博客、qq签名、、、...以下代码在游戏中取名时操作如下: 按住ALT,在小键盘上敲以下的数字, 然后松开就出来了alt+34148=卍 alt+34149=卐alt+43 -
嗨,你真的懂this吗?
2020-12-02 23:21:09隐式绑定会把函数调用中的this(即此例sayHi函数中的this)绑定到这个上下文对象(即此例中的person) 需要注意的是:对象属性链中只有最后一层会影响到调用位置。 <pre><code>javacript function ... -
mfc新建空项目,写了一个滚动条,只能往下滚,往上滚出现bug,出错原因,还有怎么改?
2019-05-24 23:43:28//case SB_LINEUP: //向上滚动一行,就是按向上的箭头 // nDelta = -linesize; //页面向下移动一行 // break; //case SB_PAGEUP: //向上滚动一页 // nDelta = -pagesize; //页面向下移动一页 // break; ... -
WPF TreeView自定义可视化树样式
2018-05-27 23:17:53目前项目中效果(没上传,需要的留言) 以下例子 最终效果: TreeView 折叠箭头,带垂直方向、水平方向层级线条(如图) 来看看怎么一步步实现吧~ 补充一点,代码本地试过,现剪切的所以可能部分运行... -
Visual Studio程序员箴言--详细书签版
2012-10-16 20:37:39技巧2.42 修改代码段中的默认值和变量 54 技巧2.43 与团队成员共享代码段 55 技巧2.44 围绕一块代码插入代码段 55 第3章 找到目标内容 57 3.1 通过键盘进行搜索 57 3.1.1 渐进式搜索 57 技巧3.1 体验渐... -
软件工程教程
2012-07-06 23:10:29通过演示及讲述,讲解课程设计的整体情况,针对其设计提出一些技术及细节问题确认是否真正理解课程设计中的要点、是否掌握了进行系统设计的知识和能力、是否本人完成。如通发现没有真正设计或者不清楚技术细节,则... -
深度剖析:如何实现一个 Virtual DOM 算法
2021-01-09 00:43:15大大减少代码中的视图更新逻辑)。但是这不是唯一的办法,还有一个非常直观的方法,可以大大降低视图更新的操作:一旦状态发生了变化,就用模版引擎重新渲染整个视图</strong>,... -
wxPython学习手册
2014-04-19 08:01:589.5 使用验证器(validator)来管理对话框中的数据 279 9.5.1 如何使用验证器来确保正确的数据? 279 9.5.2 如何使用验证器传递数据? 283 9.5.3 如何在数据被键入时验证数据? 287 9.6 本章小结 290 10、创建和使用... -
C语言编程要点
2017-09-18 00:10:373.3. 对外存(磁盘或磁带)中而不是内存中的数据进行排序称为外部排序。 39 3.4. 1哪一种查找方法最方便? 44 3.5. 1哪一种查找方法最快? 46 3.6. 1什么是哈希查找? 51 3.7. 1怎样对链表进行排序? 53 3.8. 1怎样查找... -
构建流式应用—RxJS详解
2021-01-02 13:13:10是一个基于可观测数据流在异步编程应用中的库。RxJS 是 Reactive Extensions 在 JavaScript 上的实现,而其他语言也有相应的实现,如 RxJava、RxAndroid、RxSwift 等。学习 RxJS,我们需要从可... -
react进阶之高阶组件
2021-01-02 06:55:07看一下代码就知道怎么回事了: <pre><code>javascript // 普通组件Login import React, { Component } from 'react'; import formCreate from './form-create'; export default class ... -
MAPGIS地质制图工具
2013-05-06 16:15:302、如果需要把Excel中的线也输入到MapGis中,请先设置好表格中的线,且能输入单元格的文字字体、颜色、大小等; 3、如果要自定义表格转到MapGis范围大小,在点菜单Excel->MapGis后,框选输入数据的范围,数据输入... -
arcgis工具
2012-10-22 22:37:31如:“AREA”,如果查询的是个人地理数据库数据,则需要将字段名包含在方括号内,如:[AREA],如果查询的是ArcSDE地理数据库数据或是ArcIMS要素类或ArcIMS影象服务子层中的数据,则不需要将字段名括起,如:AREA ...
-
java配置环境变量
-
C++读书笔记自学的总结
-
C. Maximum width Codeforces Round #704 (Div. 2)
-
深究字符编码的奥秘,与乱码说再见
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
Debug--关于pyltp
-
彻底搞懂git rebase命令
-
羽量级在线 HTML 编辑器
-
Liunx 优化思路与实操步骤
-
龙芯生态应用开发基础:C语言精要
-
Odoo Tree视图颜色组件,各行不同颜色
-
程序员必修基础套餐课
-
Java异常机制-从底层原理到使用实践
-
MySQL 高可用(DRBD + heartbeat)
-
基于java的图形化的小说阅读器
-
JS面试知识点7-ES6
-
FastDFS 分布式文件系统部署
-
我从产品经理的角度对运营的理解
-
Windows系统管理
-
PAT 甲级 1112 Stucked Keyboard (20 分)【测试点1】