raw_input应该只接受单个字符

时间:2012-10-18 13:08:55

标签: python

  

可能重复:
  Python read a single character from the user

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

我该如何解决?

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

3 个答案:

答案 0 :(得分:9)

以下内容会不断提示用户输入,直到他们只输入一个字符。

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()

答案 1 :(得分:4)

默认情况下,python使用行缓冲输入,这意味着在用户点击输入之前,raw_input()调用不会返回。如果要关闭行缓冲,可能需要查看可以执行的特定于操作系统的操作。 You can find a recipe demonstrating this here

答案 2 :(得分:2)

对于Python 2.7.x,

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

对于Python 3.x

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

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