两段代码有何不同,为什么运行第二段的时候会陷入死


prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
message = ""
while message != 'quit':
        message=input(prompt)
        print(message)

第一段代码运行正常,如果输入值!=quit,会自动跳转下一段。

prompt = "\nTell me something, and I will repeat it back to you:"
prompt += "\nEnter 'quit' to end the program. "
text=input(prompt)
message = ""
while message != 'quit':
        message=text
        print(message)

运行第二段时,如果输入值!=quit,就会陷入死循环。
这两段代码有何不同,望指教。

  • 第一个代码的输入语句在循环内部,也就是说,每一个循环都会执行输入语句,所以每个循环内的message都是变化的
  • 第二个代码的输入语句在循环外部,也就是进入循环前,text的值已经由输入值确定了,而每次循环中,messa=text,这个text是不变的,所以message也是不变的,所以会死循环

    img

我是这么理解的,供参考:
因为第一段代码里面获取输入在while循环里面, 每次打印输入后,会用这个不断更新的获取的输入来判断是否等于'quit',等于quit就退出,不是quit打印,再获取下一次输入,直到获取到' quit';
第二段代码只获取了一次输入,如果第一次获取的值不是'quit'就会一直打印这个结果,因为没有用input获取新的输入,所以一直是第一次获取的输入的这个值在while循环不停的执行,如果第一次输入获取的是'quit'就会打印'quit''后退出, 因为while循环判断的是message前一次的赋值"",然后再while循环用这个获取的'quit'打印后,再判断就退出了。