为什么代码在python中的input()处停止 - 有什么好处?

时间:2014-08-02 07:08:54

标签: python python-3.x input timeout

任何人都知道python会在input()处停止或暂停,这使得很难获得超时输入,这是可能的:

import tkinter as tk

class ExampleApp(tk.Tk):

    def __init__(self):
        tk.Tk.__init__(self)
        def well():
            whatis = entrybox.get()
            if whatis == "": # Here you can check for what the input should be, e.g. letters only etc.
                print ("You didn't enter anything...")
            else:
                print ("AWESOME WORK DUDE")
            app.destroy()
        global label2
        label2 = tk.Button(text = "quick, enter something and click here (the countdown timer is below)", command = well)
        label2.pack()
        entrybox = tk.Entry()
        entrybox.pack()
        self.label = tk.Label(self, text="", width=10)
        self.label.pack()
        self.remaining = 0
        self.countdown(10)

    def countdown(self, remaining = None):
        if remaining is not None:
            self.remaining = remaining

        if self.remaining <= 0:
            app.destroy()
            print ("OUT OF TIME")


        else:
            self.label.configure(text="%d" % self.remaining)
            self.remaining = self.remaining - 1
            self.after(1000, self.countdown)

if __name__ == "__main__":
    app = ExampleApp()
    app.mainloop()

我真正的问题是为什么代码暂停在input,主要有什么好处呢?

当然,如果我们可以解决这个问题(对于我认为的任何事情),那么让代码保持这样是愚蠢的。欢迎所有意见,请给我你的看法。

2 个答案:

答案 0 :(得分:1)

一个好处是什么?如果您的代码遇到应该已设置的变量,但由于用户尚未输入值而不存在,则会引发错误。例如:

legal_age = 21
age = int(input("Your age: "))

if age >= legal_age:
    print("You can drink legally!")
else:
    print("You can't drink yet!")

基本样本,但是如果它还没有值,那么Python如何使用年龄变量,因为它没有暂停等待输入?

但是,对于想要在输入后面发生的进程,线程可以非常容易地使用。

答案 1 :(得分:1)

也许应该有一个内置函数来禁用暂停。这会使多线程变得更容易,但是当你必须测试一些用输入创建的变量时,暂停是很方便的:

input1 = input("enter a big number")
if input1 >= 8:
    print("That is a big number")
else:
    print("That is tiny...")

如果在没有暂停的情况下运行,则会出现错误,输入1未定义,因此暂停非常重要。希望这很有帮助。