按 Enter 键退出 while 循环而不阻塞。我该如何改进这个方法?

2024-01-17

因此,我一直在阅读有关如何通过用户按 Enter 键退出 while 循环的一些内容,并得出以下结论:

import sys, select, os

switch = 1
i = 1
while switch == 1:
    os.system('cls' if os.name == 'nt' else 'clear')
    print "I'm doing stuff. Press Enter to stop me!"
    print i
    while sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
        line = raw_input()
        if not line:
            print "Finished! =]"
            switch = 0
        else:
            print "Finished! =]"
            switch = 0
    i = i+1

有办法解决这个问题吗?特别是“if not line”和后面的“else”看起来很乱。它们可以合二为一吗?使用“开关”的更好替代方案?

最初,如果我输入一堆字符然后按 Enter 键,它不会停止循环。我必须再次按 Enter 键。 if not 和 else 组件旨在将其设置为在第一次按 Enter 时退出。


这对我有用:

import sys, select, os

i = 0
while True:
    os.system('cls' if os.name == 'nt' else 'clear')
    print "I'm doing stuff. Press Enter to stop me!"
    print i
    if sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
        line = raw_input()
        break
    i += 1

您只需检查输入的 stdin 一次(因为第一个输入将终止循环)。如果条件行/非行有适合您的结果,您可以将它们组合成一个 if 语句。然后,只用一个while正在使用的语句,您现在可以使用break而不是设置一个标志。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按 Enter 键退出 while 循环而不阻塞。我该如何改进这个方法? 的相关文章

随机推荐

  • 表面网格到体积网格

    我有一个使用 Meshlab 从点云生成的封闭表面网格 我需要为此获得一个体积网格 这样它就不是一个空心物体 我想不通 我需要获取 stl 文件进行打印 谁能帮我获得体积网格 我更喜欢简单的解决方案而不是复杂的算法 给定一个定向的水密表面网
  • GKE Ingress-GCE 是否支持压缩?

    我的后端在 Rocket Rust 中没有内置压缩功能 因此 它依赖于代理来压缩它 虽然 nginx 入口控制器支持它 但我想默认的入口控制器是否也有它 因为它具有高可用性 如果没有的话应该如何设置呢 更新 2018 01 31 它看起来像
  • 如何从 R 中拟合线性 b 样条回归中提取基础系数?

    以下面的一结 一级样条为例 library splines library ISLR age grid seq range Wage age 1 range Wage age 2 fit spline lm wage bs age knot
  • Youtube API v3,topicId 恢复

    Youtube API v3 使开发人员能够检索有关特定视频的特定信息 在返回的数据中 有一个称为topicDetails可以按照以下示例请求 Request https www googleapis com youtube v3 vide
  • Angular 无法使用不同数量的子级重新附加 ActivatedRouteSnapshot

    这是我在 NativeScript Angular 项目中的路由 const routes Routes path redirectTo tabs default pathMatch full path tabs loadChildren
  • 如何获取 AJAX 发送的 JSON 以与 PHP 配合使用

    在我寻求让 PHP 可以使用这个 JSON 的过程中 我遇到了一个又一个的障碍 所以我想知道是否有人可以帮助我 我将 JSON 存储在变量 DivisionsJSON 中 var divisionsJSON JSON stringify d
  • 尝试创建一个删除按钮以从列表中删除项目

    我正在尝试制作一个删除按钮 该按钮将从 order List 中删除项目 我制作的 removeButton 按钮仅从列表中删除一项 然后会显示错误消息 menulist listOrder new menulist order List
  • is not null 和 <>' ' 之间有什么区别

    看看我的例子 两个代码有什么区别 Select name from customers where name is not null Select name from customers where name lt gt 他们做完全不同的事
  • 在 DOM 对象上设置属性时如何避免 no-param-reassign

    我有一个方法 其主要目的是在 DOM 对象上设置属性 function el el expando 我使用 AirBnB 的代码风格 这使得 ESLint 抛出一个no param reassign error 错误分配给函数参数 el n
  • 受保护的构造函数和可访问性

    如果子类位于不同的包中 为什么我们不能使用受保护的构造函数实例化一个类 如果可以访问受保护的变量和方法 为什么相同的规则不适用于受保护的构造函数 pack1 package pack1 public class A private int
  • 此处不应引用 Java 方法

    究竟如何使用 Java 8 链接实例的方法引用 例子 Collections sort civs Comparator comparing Civilization getStrategy getStrategLevel getStrate
  • 为什么继承的接口无法在通用上下文中转换为其基接口?

    我正在尝试在我的 C 项目中实现接口继承系统 但无法让它工作 这是一个简化版本 public interface BaseInterface public abstract class AbstractClass
  • UITableView 检测选定的单元格?

    我的应用程序中有多个 UITableView 是否有一种方法可以检测用户在该列中选择了哪个单元格 行 还可以通过编程方式取消选择单元格 行吗 Thanks 获取表当前选择的索引路径 NSIndexPath path tableView in
  • Magento 将控制器复制到本地

    当我复制一些core Mage Adminhtml Block 文件到local Mage Adminhtml Block 一切正常 但如果我将控制器复制到local Mage Adminhtml controllers 核心控制器仍然有效
  • 一对一的聊天记录,包括开火和打拳

    我已经在我的系统中安装了 open fire 通过使用邮递员工具我可以创建用户 通过使用 smack 我也可以将消息发送给其他用户 但问题是我不知道如何获取两个用户之间的聊天历史记录 这意味着如果我发送发件人和收件人用户名 我需要获取以前的
  • Javascript 中的简单 HTML 清理器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个用 JavaScript 编写的简单 HTML 清理程序 它不需要 100 XSS 安全
  • CAShapeLayer 路径弹簧动画不“过度”

    我正在尝试使用 CASpringAnimation 对 CAShapeLayer 路径进行动画处理 预期的结果是形状之间的 变形 表现出 弹性 我有一个圆形和方形路径之间的基本代码示例 如下所示 但最终结果是一个弹簧动画 它不会 超出 最终
  • 如何让tinymce默认以纯文本粘贴

    谷歌搜索了数千次 没有人给出如何让 Tinymce 默认粘贴纯文本并在不单击 粘贴为文本 按钮的情况下删除任何格式的完整解决方案 关于如何实现它有什么想法吗 或者如何自动启用 粘贴为文本 按钮 谢谢 对于tinyMCE 3X 或4X 来说
  • 分割 html 标签

    div Hi HElP ME br p ok p p p div img class div b ok1 b div img class div p end p p p b b div I want to split this html c
  • 按 Enter 键退出 while 循环而不阻塞。我该如何改进这个方法?

    因此 我一直在阅读有关如何通过用户按 Enter 键退出 while 循环的一些内容 并得出以下结论 import sys select os switch 1 i 1 while switch 1 os system cls if os