【问题标题】:How do I check if a user left the 'input' or 'raw_input' prompt empty?如何检查用户是否将“输入”或“原始输入”提示留空?
【发布时间】:2012-03-28 19:06:45
【问题描述】:

如何检查输入是否已输入?

例如(python2)

x = str(raw_input('Message>> '))

或 (python3)

y = input('Number>> ')

【问题讨论】:

  • 输入函数在输入内容之前不会返回。你的意思是如何检查输入的输入是否为空?
  • @MarkRansom 是的,这正是我所需要的! :)

标签: python python-2.x


【解决方案1】:

您知道第二个是否没有输入任何内容,因为它会引发SyntaxError。您可以像这样捕获错误:

try:
    y=input('Number>> ')
except SyntaxError:
    y = None

然后测试

# not just 'if y:' because 0 evaluates to False!
if y is None:

或者,最好使用raw_input

try:
    y = int(raw_input('Number>> '))
except ValueError:
    print "That wasn't a number!"

对于第一个,如果没有输入,x 将是一个空字符串。对str 的调用是不必要的——raw_input 已经返回一个字符串。可以显式测试空字符串:

if x == '':

或隐含地:

if x:

因为唯一的False 字符串是一个空字符串。

【讨论】:

  • @hochl 如果只是空格不是有效消息:)
  • 完美!非常感谢您的回答 agf 和 hochl。 :)
  • if not x:if len(x) < 1: 作为if x == '': 的替代品怎么样,或者那些被认为是不好的做法?
  • @Dennis 查看我帖子中的最后一个代码。我确实提到只使用if x: 来测试空虚。
【解决方案2】:

这个也可以

y = input('Number>> ')
while not y:
    y = input('Number>> ')

【讨论】:

  • 更喜欢简单、不言自明的 3 行答案。谢谢:)
猜你喜欢
  • 2012-02-06
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 2013-01-11
  • 2020-09-20
相关资源
最近更新 更多