【发布时间】:2021-05-07 12:05:15
【问题描述】:
我一直在尝试编写需要修改循环内变量的代码。
a = 1
b = 2
while a<b:
print(b)
现在我想在循环运行时更改 b 的值。 我试图找到答案,但无法做到。 是否有可能我使用初始值为 b 的循环并自动终止此循环并在变量 b 修改为其他值时启动一个新循环? 这怎么可能? 注意:我想从外部修改 var b。
进一步说明:
代码的设计方式应该是,当循环已经运行时,可以修改用于检查 while 循环条件的变量。 假设用户想将此 while 循环用作函数,他在函数中传递变量以启动循环。现在他想改变变量值(在上面的例子中是var b),它在while循环条件中使用。
def start_loop(a,b):
while a<b:
#more codes will be included here
print('The loop is running infinitely')
#call the function
start_loop(1,2)
Consol: The loop is running infinitely....
循环无限运行,因为循环已经在运行我不能要求 while 循环更改 var b 的值。 我正在寻找可以处理这种情况的解决方案。 当循环已经运行时,用户如何从外部修改“var b”?
或者我如何使用修改后的 var b 值调用相同的 start_loop() 函数?这样做应该会导致旧循环的终止和新循环的开始。
我希望我能在这里找到答案:) 谢谢。
【问题讨论】:
-
你的代码实际上应该做什么?
-
我很困惑。您可以直接修改 while 块中 b 的值,是什么阻止了您? “从外部修改 var b”。在什么之外?为什么全局变量标签是相关的?我认为如果你发布一个更具包容性的代码 sn-p 它会很有启发性。
-
@Reti43 代码的设计方式应使用于检查 while 循环条件的变量可以在循环已经运行时进行修改。假设用户想将此 while 循环用作函数,他在函数中传递变量来启动循环。现在他想更改变量值(在上述情况下为 var b),该值用于 while 循环条件。
def start_loop(a,b): while a<b: # more codes will be included here print('The loop is running infinitely ') -
@Reti43 # 调用函数 start_loop(1,2) 控制台:循环无限运行,因为循环已经在运行我不能要求 while 循环更改 var b 的值。我正在寻找可以处理这种情况的解决方案。当循环已经运行时,用户将如何从外部修改“b”?或者如何使用修改后的 var b 值调用相同的 start_loop() 函数?这样做会导致旧循环的终止和新循环的开始。我把 global var 作为一个标签,因为我认为如果可能的话,它可以通过 global vars 来解决。
-
听起来您希望您的函数
start_loop并行运行,同时您还希望在函数之外运行更多代码。按照您的方式,while 循环将阻塞其他所有内容,因为它将无限期地运行。此外,函数中的b与外部作用域中的b不同。您可以在函数内部修改它而不影响另一个。你到底想做什么?
标签: python loops variables while-loop global-variables