raw_input围绕字符串的多个输入

时间:2015-06-18 16:48:33

标签: python split raw-input

用户是否可以在字符串周围输入多个变量(因此在键入时它们就在那里)。 我希望用户输入数字x,y,u,v,如

(x,y)到(u,v),括号和逗号用于指导他们的输入。

我希望它成为某种东西(我知道此代码错误),如:

a1, a2, a3, a4 = raw_input("("+x1+", "+x2+") to ("+x3+", "+x4+")").split()

其中,我选择了第i个x值。

1 个答案:

答案 0 :(得分:0)

您的代码没错。

它确实有效:

>>> x1,x2,x3,x4 = 'xyuv'
>>> a1, a2, a3, a4 = raw_input("("+x1+", "+x2+") to ("+x3+", "+x4+")").split()
(x, y) to (u, v)1 2 3 4
>>> a1
'1'
>>> a2
'2'
>>> a3
'3'
>>> a4
'4'

然而:

  • 输出(a1a2a3a4)是字符串。
  • 它需要4个数字的严格格式,用空格分隔。偏离此格式会导致解释器抛出各种异常。

您可以通过map(int, ...)这样解决第一个问题:

a1, a2, a3, a4 = map(int, raw_input("("+x1+", "+x2+") to ("+x3+", "+x4+")").split())

对于第二个问题,也许你可以用try: ... except: ...包围代码,并用while True包围它,这样直到它得到异常,它会重复它:

while True:
    try:
        a1, a2, a3, a4 = map(int, raw_input("("+x1+", "+x2+") to ("+x3+", "+x4+")").split())
        break
    except:
        continue

在这里,我试着给它输入一些不好的输入,最后输入一个好的输入(当它得到良好的输入时终止):

(x, y) to (u, v)a
(x, y) to (u, v)a a a a
(x, y) to (u, v)1 2 3 4