Python 从输入返回字符串列表

Python 从输入返回字符串列表,python,python-3.x,Python,Python 3.x,我目前正在处理一个名为,getBASIC()的函数。这就是为什么我要这样做: 编写一个函数getBASIC(),它不接受任何参数,并执行以下操作:它应该使用while循环保持从输入读取行;当它到达末尾时,它应该以字符串列表的形式返回整个程序 该程序以以下形式接受输入: X GOTO Y Y GOTO Z Z END 等等等等 我的代码如下: def getBASIC(): l = [] while len(i.split()) == 3: i = input(

我目前正在处理一个名为,
getBASIC()
的函数。这就是为什么我要这样做:

编写一个函数
getBASIC()
,它不接受任何参数,并执行以下操作:它应该使用while循环保持从输入读取行;当它到达末尾时,它应该以字符串列表的形式返回整个程序

该程序以以下形式接受输入:

X GOTO Y  
Y GOTO Z  
Z END 
等等等等

我的代码如下:

def getBASIC():
   l = []
   while len(i.split()) == 3:
      i = input()
      l.append(i)
   return(l)
问题是,我得到了一个
UnboundLocalError:赋值前引用的局部变量“I”
。现在我知道这是为什么了,但我突然变成了一个白痴,不知道如何解决它。如果您能帮助调试,我们将不胜感激。谢谢。

简单的解决方案

   i = input()
   l.append(i)
   while len(i.split()) == 3:
       i = input()
       l.append(i)
其他解决方案:

    while True:
        i = input()
        l.append(i)
        if len(i.split()) != 3:
            break
简单解

   i = input()
   l.append(i)
   while len(i.split()) == 3:
       i = input()
       l.append(i)
其他解决方案:

    while True:
        i = input()
        l.append(i)
        if len(i.split()) != 3:
            break

我对python一无所知,但我想在while循环之前放置类似于
I=“A B C”
的东西应该会起作用。我对python一无所知,但我想在while循环之前放置类似于
I=“A B C”
的东西应该会起作用。第一种解决方案完全错误。一条线被消耗,永远消失。第二种解决方案并不优雅。@mostruash:第二种解决方案是一种常见的Python习惯用法,可以避免重复。如果有什么安慰的话,3.x中编译的代码实际上不会在每次传递时测试内置
True
的布尔值。实际上,这是一个边做边循环。很抱歉没有回复-我被转移了话题。第一个解决方案不正确(我知道,因为我已经尝试过了)。是时候测试第二个了。第一个解决方案完全错误。一条线被消耗,永远消失。第二种解决方案并不优雅。@mostruash:第二种解决方案是一种常见的Python习惯用法,可以避免重复。如果有什么安慰的话,3.x中编译的代码实际上不会在每次传递时测试内置
True
的布尔值。实际上,这是一个边做边循环。很抱歉没有回复-我被转移了话题。第一个解决方案不正确(我知道,因为我已经尝试过了。)是时候测试第二个了。