在if或while语句中分配变量值

时间:2012-02-01 20:07:50

标签: python while-loop

  

可能重复:
  Is there any way to do variable assignments directly inside a while(<here>) loop in Python?

对这样一个基本问题感到抱歉。我正在尝试学习Python,但我们还没有找到答案。

在Python中,我可以在whileif语句中为变量赋值吗?如果是这样,怎么样?

例如。我不得不这样做:

line_list = []
while True:
    line = raw_input(">>> ")
    if not line: break
    line_list.append(line)
print line_list

但我想这样做:

line_list = []
while line = raw_input(">>> "):
    line_list.append(line)
print line_list

我看过的教程并没有提到这种或那种方式,但这是大多数其他语言的常见结构。

3 个答案:

答案 0 :(得分:7)

那是不可能的。 Python中的Assignments是语句,而不是表达式。

他们不会评估指定的值,也不会返回对所分配对象的引用,这是其他语言的惯例。

答案 1 :(得分:6)

正如Frédéric的回答所示,不可能为变量分配whileif,但是使用iter()和函数/ sentinel调用可以完成基本相同的操作格式:

for line in iter(lambda: raw_input(">>>"), ""):
    line_list.append(line)

答案 2 :(得分:0)

您不想在此处使用while循环!一旦输入一些输入并且命中“输入”,它就无限地附加到列表中。

这应该有效:

while 1:
    line = raw_input(">>> ")
    if line:
        line_list.append(line)

当然,这不是一回事,但就我所知,它可以满足您的需求。