3

可能重复:
Python 从用户读取单个字符

我正在使用下面的代码。但是它允许用户放置多个字符,而不是接受单个字符。

我该如何解决?

guess = raw_input(':')
guessInLower = guess.lower()
4

3 回答 3

10

以下将不断提示用户输入,直到他们恰好输入一个字符。

userInput = ''
while len(userInput) != 1:
    userInput = raw_input(':')
guessInLower = userInput.lower()

这样做是一样的,但也会在再次提示输入之前通知他们一个字符的限制

while True:
    userInput = raw_input(':')
    if len(userInput) == 1:
        break
    print 'Please enter only one character'
guessInLower = userInput.lower()

看起来你只期待字母。如果是这种情况,您可以进一步扩展以要求:

import string

while True:
    userInput = raw_input(':')
    if len(userInput) == 1:
        if userInput in string.letters:
            break
        print 'Please enter only letters'
    else:
        print 'Please enter only one character'
guessInLower = userInput.lower()
于 2012-10-18T13:17:10.787 回答
4

默认情况下,python 使用行缓冲输入,这意味着raw_input()在用户点击回车之前调用不会返回。如果您想关闭线路缓冲,您可能需要查看您可以执行的特定于操作系统的操作。你可以在这里找到一个演示这个的食谱

于 2012-10-18T13:16:35.340 回答
2

对于 Python 2.7.x,

guess = raw_input(': ')[0].lower()

对于 Python 3.x

guess = input (': ')[0].lower()

在这两种情况下,来自终端原始输入字符串的第一个字符(不需要使用'')将被降低并传递给变量guess

于 2012-10-18T13:54:03.567 回答