有没有办法在一个未定义的变量上使用 while 循环?(我应该如何重写这个 Python 代码)

19 浏览
0 Comments

有没有办法在一个未定义的变量上使用 while 循环?(我应该如何重写这个 Python 代码)

我想做一个循环,直到用户在输入中什么都不输入为止。

这是我目前的工作方式,但我想去掉answer = None的实例化。

def answer_as_ul(question, input_prefix='• '):
    print(question)
    answer_list = list()
    answer = None
    while answer != '':
        answer = input(input_prefix)
        answer_list.append(answer) if answer else None
    return answer_list

有没有办法在这里去除answer = None并保持功能?

0
0 Comments

问题的出现原因是在while循环中使用了一个未定义的变量,即answer。这会导致程序在运行时出现错误。

解决方法是在while循环之前定义answer变量。可以将answer初始化为一个空值,如None或空字符串。这样,在循环开始时,answer已经被定义,并且可以在循环中正常使用。

以下是修复后的代码示例:

def answer_as_ul(question, input_prefix='• '):
    print(question)
    answer_list = list()
    answer = None  # 初始化answer变量
    while True:
        answer = input(input_prefix)
        if answer:  # 如果answer为真值
            break
        else:
            answer_list.append(answer)
    return answer_list

0
0 Comments

有人在提问中提到了一个问题,即在Python中是否有办法对一个未定义的变量进行while循环。下面是一个用于解决这个问题的代码示例:

def answer_as_ul(question, input_prefix='• '):
    print(question)
    answer_list = []
    while True:
        answer = input(input_prefix)
        if not answer: break
        answer_list.append(answer)
    return answer_list

在这段代码中,我们定义了一个函数`answer_as_ul`,它接受一个问题作为参数,并返回用户输入的答案列表。在函数中,我们使用了一个`while True`循环来不断接受用户的输入,直到用户输入为空为止。用户的每个输入都会被添加到一个答案列表中,并最终返回该列表。

在问题中,有人问到是否使用`[]`而不是`list()`更符合Pythonic风格。有人回答说是的,他们在优秀的代码中更常见地看到了使用`[]`的情况。这可能是因为`[]`更短而且更简洁。

另外,有人提供了一个链接,指出使用`[]`比使用`list()`更快速。

这段代码提供了一种解决未定义变量进行while循环的方法,并讨论了使用`[]`和`list()`的不同之处。

0
0 Comments

在Python 3.8中,引入了一种新的赋值表达式,即“海象运算符”(walrus operator),它可以将一个表达式的值赋给一个变量,并在同一行中使用该变量。这种赋值表达式的语法形式为`:=`。

在上述代码中,使用了海象运算符来实现一个未定义变量的while循环。具体来说,代码定义了一个名为`answer_list`的空列表,然后使用while循环来接受用户输入的答案,并将其添加到`answer_list`中。循环条件部分使用了海象运算符:`answer := input(input_prefix)`,它将用户输入的值赋给了`answer`变量,并检查该值是否为真(即非空字符串)。只要用户输入的值不为空字符串,循环就会继续执行。

这种使用海象运算符的方式非常简洁和Pythonic,可以避免显式地定义一个初始值为`None`的变量来实现类似的功能。通过这种方式,可以在变量未定义的情况下进行while循环,提高了代码的可读性和简洁性。

总之,使用Python 3.8的海象运算符可以实现对未定义变量的while循环,使代码更加简洁和优雅。

0