1

首先,请原谅我,因为我在 Python 方面非常陌生(我真的是一个 HTML/CSS 类型的人,但我正在尝试扩展)。这可能是一个基本的问题,但我们都必须从某个地方开始,对吧?

我正在编写一个非常基本的 Python 程序,该程序将从一串字母中随机选择一个字母,并在每次有人按下任意键时将其打印出来。整个事情很简单,目前返回一个随机字母,但不等待按键这样做,并在完成函数运行一次后停止。

import random
letterlist = 'abcd'


def random_letter(letters):
    print ('Press enter for a random letter...')
    print random.choice(letters)

random_letter(letterlist)

输出应如下所示:

Press enter for a random letter.
'b'
Press enter for a random letter.

(等等...)

很明显,我需要做的任何事情都应该在 random_letter 的某个地方。我一直在谷歌搜索,发现很多对 raw_input 和 mvscrt 的引用,但我不完全确定我需要什么。我完全有可能只是问错了问题。

我假设我需要某种循环来保持它无限期地运行。

提前致谢!

4

2 回答 2

1

对于初学者,您需要一个循环来继续提示用户。您还需要循环的某种退出条件。这个循环可以像这样在函数内部:

def random_letter(letters):
    while True:
        x = raw_input('Press enter for a random letter...')
        if x == 'done':
            break
        print random.choice(letters)

random_letter('abcdef')

请注意,在我们raw_input用来提示用户输入内容的循环内部,任何内容,然后按 Enter。当用户done输入并点击回车时,我们使用break.

另一种方法是将现有函数包装在一个循环中,并处理函数外部的提示。

def random_letter(letters):
    print random.choice(letters)

while True:
    x = raw_input('Press enter for a random letter...')
    if x == 'done':
        break
    random_letter('abcdef')
于 2013-07-05T18:14:51.667 回答
0

如果您不必使用循环,并且考虑捕获键盘事件,那么就没有跨平台的方法:是否有跨平台的python低级API来捕获或生成键盘事件?

对于 Windows,有pyHookhttp ://pyhook.wiki.sourceforge.net/

您可以查看 pyKeyLogger 的代码: http : //pykeylogger.wiki.sourceforge.net/

或者一个肮脏的方式,捕获中断:Capture keyboardinterrupt in Python without try-except

于 2013-07-05T18:19:35.253 回答