当前位置: 首页 > 面试题库 >

Python:如何在运行无限循环时从控制台获取输入?

仲孙昊焱
2023-03-14
问题内容

我正在尝试编写一个简单的Python IRC客户端。到目前为止,我可以读取数据,并且可以自动将数据发送回客户端。我在中获取数据while True,这意味着我无法在输入数据的同时读取数据。如何在控制台中输入仅在按Enter键时发送的文本,同时运行无限循环?

基本代码结构:

while True:
    read data
    #here is where I want to write data only if it contains '/r' in it

问题答案:

另一种方法涉及线程。

import threading

# define a thread which takes input
class InputThread(threading.Thread):
    def __init__(self):
        super(InputThread, self).__init__()
        self.daemon = True
        self.last_user_input = None

    def run(self):
        while True:
            self.last_user_input = input('input something: ')
            # do something based on the user input here
            # alternatively, let main do something with
            # self.last_user_input

# main
it = InputThread()
it.start()
while True:
    # do something  
    # do something with it.last_user_input if you feel like it


 类似资料:
  • 问题内容: 我正在使用Pygame / SDL的操纵杆模块从游戏手柄获取输入。每次调用它的方法时,它都会打印到控制台。这是有问题的,因为我使用控制台来帮助我进行调试,现在每秒被淹没60次。有什么方法可以禁用此功能吗?通过Pygame / SDL中的选项还是在函数调用时取消控制台输出?我在Pygame文档中没有提到这一点。 编辑: 原来是由于在编译SDL库时打开了调试功能。 问题答案: 这是来自jo

  • 问题内容: 我有此方法,并且从控制台(键盘)读取了一个整数序列,并将所有整数添加到ArrayList中,我使用Scanner类读取了这些数字,但是在for循环中不起作用,它抛出“ java.util.NoSuchElementException”。 问题答案: 首先,使用一个扫描仪,而不是每次都重新创建一个扫描仪。此外,您的for循环还会多循环一次。 这对我来说很好,最后列表包含了我输入的所有数字

  • 我试图实时调试一个C程序,它使用来自VScode的C/C++扩展,还允许我使用scanf()将直接输入写到控制台。但是,当我调试代码时,它打开调试控制台,不允许我输入任何输入。 我发现人们回答这个问题的两个线程: https://github.com/omnisharp/omnisharp-vscode/issues/1053 两者都建议将launch.json文件中的“Console”属性设置为

  • 不知道如何阻止这个while循环无限重复。我使用检查用户输入是否为int。如果没有输入int值,则循环将无限重复。

  • 我正在为一个小项目尝试一些Java的套接字编程。我遇到了从外部进程读取无限InputStream的问题。程序进入无限循环。 我怀疑readLine()必须在EOF之前读取流。 我放了一些打印语句,我确信程序达到了while循环。 这是我的方法:

  • 问题内容: 我想从命令行读取标准输入,但是在提示我输入之前,我的尝试以结束程序退出而告终。我正在寻找C#中的Console.ReadLine()等效项。 这是我目前拥有的: 问题答案: 我不确定块有什么问题 因为它可以在我的机器上使用。但是,对于下一个块,您需要一个指针,该指针指向要将输入分配给它们的变量。尝试替换为。不要使用,因为它解析内存中已有的字符串,而不是解析来自stdin的字符串。如果您