【问题标题】:How to keep variable defined inside while loop when it ends如何在while循环结束时将变量定义在while循环中
【发布时间】:2016-01-12 15:56:44
【问题描述】:

我正在使用 Python 3.5。我正在使用 while 循环,并更改用户输入的变量(已由用户定义):

variable = eval(input("[...]"))
while [input isn't what the user is expected to enter]:
    variable = eval(input("[Asking to enter a correct input]"))

所以当用户输入正确的值时循环结束。然而,由于“变量”是在 while 循环中定义的,当用户为“变量”分配一个正确的值时,循环结束,“变量”的第一个(和不正确的)值被考虑用于程序的其余部分。

我怎样才能让它记住的值是在 while 循环中定义的值?

【问题讨论】:

  • 它已经可以按照您想要的方式工作了。如果变量是在 while 循环之外定义的,它将保留 while 循环最后一次迭代的值。
  • 这已经发生了,whilefor 循环不会在 Python 中创建新范围。
  • 您知道将用户输入传递给eval() 是一个巨大 安全问题,对吗?
  • 你是对的,谢谢你的回复。不,我不是,但我只是将它用于学习目的,而且我是唯一使用该程序的人。

标签: python variables python-3.x while-loop


【解决方案1】:

似乎您在 while 循环中重新定义了一个全局变量。要引用外部“变量”,您需要将其声明为全局。看看:

Using global variables in a function other than the one that created them

按照您声明它的方式,内部“变量”被创建为与外部“变量”不同的变量(即使它们具有相同的名称),并且在 while 循环结束时被丢弃,因此您结束up 引用原始(全局)“变量”。

【讨论】:

  • 如果能提供代码示例就好了
  • 在之前链接的问题中,这个答案显示了该情况的代码示例:stackoverflow.com/questions/423379/…
  • 这是不正确的。与函数不同,循环不会引入新的作用域
【解决方案2】:

实际上,您的代码已经如此。如果 while 循环开始,则保持循环内设置的 variable 的值。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2016-02-19
    相关资源
    最近更新 更多