从数字字符串列出问题

时间:2011-09-02 08:59:52

标签: python

我从input()获取一个字符串,其中包含由空格(1 5 6 3)分隔的数字。首先,我试图检查输入只包含带有isdigit()函数的数字,但由于空格我无法使其工作。然后我使用split()函数将字符串转换为列表。

我需要的是从输入中创建一个列表并使其成为仅由数字组成的列表,否则发送消息并请求新输入。 maby是否可以在isdigit()中添加一个参数来生成空格的执行?

谢谢

3 个答案:

答案 0 :(得分:6)

您所描述的是在跳过方法之前的外观,即首先检查输入是否符合,然后解析它。使用 Easier来请求宽恕而不是许可方法更加诡计多端,即只做它并处理异常:

s = raw_input() # input() in Python 3
try:
  numbers = map(int, s.split())
except ValueError:
  print('Invalid format')

答案 1 :(得分:0)

可能比它需要的要复杂得多,但如果字符串只包含数字,则返回true:

not sum([not i.isdigit() for i in thestring.split()])

答案 2 :(得分:0)

您应该尝试转换,并在异常时再次询问。我就是这样做的。 (我已经包含了一个Ctrl + c转义符,以避免被锁定在循环中。

import sys

list = None
while True:
    try:
        print "Enter your digits : ",
        content = raw_input()
        list = [int(x) for x in content.strip().split(" ")]
        break
     except KeyboardInterrupt: # Presses Ctrl+C
        print "Exiting due to keyboard interrupt"
        sys.exit(-1)
     except:
        print "Bad content, only digits separated by spaces"
print list