我从input()获取一个字符串,其中包含由空格(1 5 6 3)分隔的数字。首先,我试图检查输入只包含带有isdigit()函数的数字,但由于空格我无法使其工作。然后我使用split()函数将字符串转换为列表。
我需要的是从输入中创建一个列表并使其成为仅由数字组成的列表,否则发送消息并请求新输入。 maby是否可以在isdigit()中添加一个参数来生成空格的执行?
谢谢
答案 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