首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用while true循环添加def函数

如何使用while true循环添加def函数
EN

Stack Overflow用户
提问于 2019-04-07 19:16:48
回答 3查看 221关注 0票数 3

我已经添加了一个函数定义,当你按下空格键时告诉我的乌龟跳起来。在我的代码中还有一个while True循环,只要按下空格键,while True循环就会暂时冻结,直到跳转完成,然后继续执行。

我已经尝试在while True循环和外部添加函数定义。我只能将函数定义放在while True循环之前,因为如果我把它放在while True之后,代码将永远不会到达它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#making the player jump
def jump():
    player.fd(100)
    player.rt(180)
    player.fd(100)
    player.lt(180)

turtle.listen()
turtle.onkey(jump, "space")

我希望while True循环不会冻结,但无论我在哪里尝试放置def,它似乎都不起作用。

我也看到了与此类似的另一个答案,但我不明白如何将其应用于我的代码。

任何其他的建议都会很棒。

EN

回答 3

Stack Overflow用户

发布于 2019-04-07 22:50:07

在你让异步的东西工作之前,这里有一个最简单的实现,使用turtle自己的计时器事件来保持障碍向前移动,即使是在跳跃的时候:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from turtle import Screen, Turtle

def jump():
    screen.onkey(None, 'space')  # disable handler inside handler

    if jumper.ycor() == 0:  # if jumper isn't in the air
        jumper.forward(150)
        jumper.backward(150)

    screen.onkey(jump, 'space')

def move():
    hurdle.forward(6)
    if hurdle.xcor() > -400:
        screen.ontimer(move, 100)

jumper = Turtle('turtle')
jumper.speed('slowest')
jumper.penup()
jumper.setheading(90)

hurdle = Turtle('turtle')
hurdle.speed('fastest')
hurdle.penup()
hurdle.setheading(180)
hurdle.setx(400)

screen = Screen()
screen.onkey(jump, 'space')
screen.listen()

move()

screen.mainloop()

你可以找到几个,更丰富的版本,所以通过搜索‘海龟-图形跳转’

避免在turtle的基于事件的环境中使用while True:循环。

票数 2
EN

Stack Overflow用户

发布于 2019-04-07 22:52:27

我本以为用async很难做到这一点,但我构建了一个可以工作的示例。

jump中,我使用asyncio.sleep,这样当一只海龟在睡觉时,其他海龟就可以行走了。没有asyncio.sleep,第一只乌龟一直在散步。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import asyncio
import turtle

t1 = turtle.Turtle()
t2 = turtle.Turtle()

async def jump1():
    while True:
        t1.fd(100)
        await asyncio.sleep(0.01)
        t1.left(90)


async def jump2():
    while True:
        t2.fd(100)
        await asyncio.sleep(0.01)
        t2.right(90)

tasks = [jump1(), jump2()]

# Python 3.6.7
loop = asyncio.get_event_loop()    
loop.run_until_complete(asyncio.wait(tasks))

# Python 3.7
#asyncio.run(asyncio.wait(tasks))

但构建更复杂的东西可能会更困难。

我还找到了使用asyncaioturtle - turtle。也许使用aioturtle会更容易。

票数 1
EN

Stack Overflow用户

发布于 2019-04-07 19:27:32

问题如下:

跳转事件的代码被同步调用。这意味着,在继续之前,一切都必须等待跳转()完成。这可以通过异步声明/调用jump()方法来修复。这个网站很好地解释了异步python的含义以及如何实现它:https://hackernoon.com/asynchronous-python-45df84b82434

简而言之,它是如何实现的(在python 3.3或更高版本中):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
async def jump():
    #your code here

这只会使jump()函数异步运行。

现在,当你调用它的时候,你必须这样调用它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
await jump()

这可能不起作用,这取决于您的确切设置。

我希望这能帮到你。如果你还有其他问题,请问我。

编辑:示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55562732

复制
相关文章
Django REST框架 | 封装 Respose 类
可以发现在给客户端返回数据都有固定的格式,比如 json。我们为了减少重复代码,重写Response 类
白墨石
2021/01/12
1.6K0
django-rest-framework框架学习
现在新一代web应用都开始采用前后端分离的方式来进行,淘汰了以前的服务器端渲染的方式。前后端分离方式有许多好处,比如 1、可以前后端并行开发,提高开发效率 2、页面都在客户端进行渲染,提高了渲染速度,减小了服务器的压力 3、一套api提供给多个客户端使用,而且不限制客户端的类型(web,app均可)
earthchen
2020/09/24
1.3K0
Django Rest Framework 分页(中)
Django Rest Framework 分页(上) 一、使用普通分页 ① 自定义分页类 page_query_param:表示 url 中的页码参数; page_size_query_param
小团子
2019/07/18
9330
Django Rest Framework 分页(中)
Django REST 框架详解 08 | 认证组件
APIView 的 dispatch 中使用 initial 方法实现初始化并进行三大认证,第一步就是认证组件
白墨石
2021/01/12
1.2K0
Django REST 框架详解 09 | 权限组件
APIView 的 dispatch 中使用 initial 方法实现初始化并进行三大认证,第二步进行权限组件调用
白墨石
2021/01/12
1.2K0
Django REST 框架详解 05 | 视图家族 Mixins
Django REST framework 为了方便视图类的操作,构建了包括以下几种视图类和工具集:
白墨石
2021/01/12
1.1K0
Django REST 框架详解 02 | 设置与模块
文章目录 一、设置 二、路由模块 三、数据库模块 四、异常模块 一、设置 setting.py import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for
白墨石
2021/01/12
1K0
Django REST 框架详解 10 | 频率认证组件
APIView 的 dispatch 中使用 initial 方法实现初始化并进行三大认证,第三步进行权限组件调用
白墨石
2021/01/12
8500
django_rest 框架解决跨域问题
解决跨域问题,需要安装一个包 pip install django-cors-headers 这个包是 rest框架特定的 之后在setting里面app里面注册’corsheaders’, 还要加一个中间件,位置一定要放对
一写代码就开心
2021/03/02
9400
Django REST 框架的 FBV 与 CBV 选择
浏览器通过url传给路由,由as_view 进入ChildView,ChildView通过View的 dispatch 方法来根据不同请求方法执行不同的方法
白墨石
2021/01/12
1.3K0
Django Rest Framework 序列化(中)
Django Rest Framework 序列化(上) 一、进一步使用 Serializer ① 路由 ② 视图 ③ 使用 serializer # choices 字段显示 user_type
小团子
2019/07/18
1K0
Django Rest Framework 序列化(中)
Django Rest Framework
https://q1mi.github.io/Django-REST-framework-documentation/
vanguard
2020/07/07
2.3K0
Django Rest Framewor
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务) 204 NO CONTENT - [DELETE]:用户删除数据成功。 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。 401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。 404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。 406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。 500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。 更多看这里:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 状态码
py3study
2020/01/19
1.3K0
Django Rest Framewor
django rest swagger
在周四的测试运维试听课程中,芒果给大家介绍了契约测试,以及基于django rest framework 的 Swagger使用,这里我们来做个小总结。
TestOps
2022/04/07
7340
django rest swagger
django rest_framework使用pytest单元测试
执行 python manager.py test 会对路径所有test*.py 进行测试
编程黑洞
2023/03/06
7210
Django REST Framework
Django REST Framework 1. REST 前后端分离 API-ApplicationProgrammingInterface 为了应付千变万化的前端需求 REST:RepresataionsStateTrans 20000 Fieding博士提出 RESTful:遵守REST规范的技术设计的软件可以称为RESTful REST规范 URL代表一个资源,一个资源应该是一个名词 动作有HTTP的methode方法提供 URL应该包含版本信息,版本信息也可以放在HTTP协议中 过滤信息,使用UR
ruochen
2021/07/22
2.2K0
Django REST Framework
django-rest_framework api框架学习day1
今天开始了django-rest-framework的学习 *** 其实api写起来的话要比前后端一起写要简单很多,因为你不需要关心前端怎么写,主要心思放在后端上面即可,前端的话随便找个模板,然后用vue语法嵌套上去就好了,一样可以做到很好看,实现了前后端的分离,非常的nice,开始学习之路了!加油奥利给 *** 首先需要安装rest-framework *** pip install framework *** 接着在setting-installed-apps中注册 *** INSTALLED_APPS = [ ‘django.contrib.admin’, ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘testAPI.apps.TestapiConfig’, ‘rest_framework’, ‘ajax’, ] *** 注册完成之后路由上的写法也有些不同, URL中 *** from django.urls import path from . import views from .views import Order app_name=’testAPI’ urlpatterns=[ path(”,Order.as_view()),
kirin
2020/05/09
1.3K0
Spring MVCD框架中调用HanLP分词的方法
项目简要:关于java web的一个项目,用的Spring MVCd 框架。鉴于参与此次项目的人中并不是所人都做的Spring,为了能够提高效率,建议大家是先抛开SPring来写自己负责的模块,最后再把各个模块在Spring里面集成。
IT小白龙
2019/07/10
7760
Spring MVCD框架中调用HanLP分词的方法
Django REST 框架详解 06 | 视图家族 Generics 与 Viewsets
工具视图都是 GenericAPIView 的子类,不同的子类继承不同工具类,重写请求方法。
白墨石
2021/01/12
1.3K0
点击加载更多

相似问题

JVM内存转储

10

转储共享内存

12

转储移动内存

11

恢复内存转储

22

PHP内存转储

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文