Python while循环以获取多个输入。两种技术-失败时的案例?

Python while循环以获取多个输入。两种技术-失败时的案例?,python,input,while-loop,Python,Input,While Loop,重新提问,重新措辞,这是第一次因为是一种意见而被关闭。感谢deceze和Thierry在闭馆前的思考 Python:下面的两个代码示例都使用while循环来允许多个输入。到目前为止,他们都为我工作。对于未来,什么情况会导致一种技术与另一种技术的失败 print( "Technique #1 - *while True:*") name_in = '' while True: name_in = input('enter name or "done&quo

重新提问,重新措辞,这是第一次因为是一种意见而被关闭。感谢deceze和Thierry在闭馆前的思考

Python:下面的两个代码示例都使用while循环来允许多个输入。到目前为止,他们都为我工作。对于未来,什么情况会导致一种技术与另一种技术的失败

print( "Technique #1 - *while True:*")
name_in = ''
while True:  
    name_in = input('enter name or "done"')
    if name_in=='done': break
    print(name_in) #do some task


print( " Technique #2 - *while expression:*")
name_in = input('enter name or "done"')  # first time
while name_in != 'done': 
    print(name_in) #do some task
    name_in = input('enter name or "done"') #subsequents  

这两种方法在功能上应该是相同的;我不认为你所能提供的任何信息会导致他们的行为有所不同

主要区别在于,技巧2涉及代码复制(您必须复制并粘贴输入语句),这是不好的,因为如果您现在需要更改提示符,则需要在两个位置进行更改


通过在循环之前不在中初始化name_,您可以稍微缩短技术1的代码,因为在您将其分配到循环体之前从未使用过它。

从功能上讲,这两种方法应该是相同的;我不认为你所能提供的任何信息会导致他们的行为有所不同

主要区别在于,技巧2涉及代码复制(您必须复制并粘贴输入语句),这是不好的,因为如果您现在需要更改提示符,则需要在两个位置进行更改


通过在循环之前不在中初始化
name\u,可以稍微缩短技巧#1的代码,因为在将其分配到循环体之前从未使用过它。

您可以使用类似的方法:

name_in = ''
while name_in != "something":
    name_in = input('enter name or "something"')
print(n_name)

你可以用类似的方法:

name_in = ''
while name_in != "something":
    name_in = input('enter name or "something"')
print(n_name)

Python 3.8引入了
walrus操作符
:=

# Loop-and-a-half (see https://www.python.org/dev/peps/pep-0572/#capturing-condition-values)
while (name_in := input('enter name or "done"')) != "done":
    print(name_in)

这难道不是一种美吗?

Python 3.8引入了
walrus操作符
:=

# Loop-and-a-half (see https://www.python.org/dev/peps/pep-0572/#capturing-condition-values)
while (name_in := input('enter name or "done"')) != "done":
    print(name_in)


这不是一种美吗?

阿林:谢谢,有一种想法:那就走了“完成”由任务处理,对吗?那么是否需要从任务中排除?我不太明白你问我什么,如果只是我很抱歉,但如果你指的是必须在那之后打印名称,是的,教授,但我是新的堆栈溢出,我放回勾号,因为这是我从discord中学到的,谢谢这并没有回答问题!OP知道他们可以使用这样的东西,因为这就是“技术2”的含义!嗯,我还在学英语,所以如果这不能回答问题,我很抱歉。阿林:谢谢,有一个想法:那就走了“完成”由任务处理,对吗?那么是否需要从任务中排除?我不太明白你问我什么,如果只是我很抱歉,但如果你指的是必须在那之后打印名称,是的,教授,但我是新的堆栈溢出,我放回勾号,因为这是我从discord中学到的,谢谢这并没有回答问题!OP知道他们可以使用这样的东西,因为这就是“技术2”的含义!我还在学英语,所以如果这不能回答问题,我很抱歉。Samwise:好的观点:重复提示是不好的。但如何避免在任务中输入正在处理的“完成”?需要另一个if-before任务来检查输入是否“完成”是;您在技巧1中的
中断
已经实现了这一点。Samwise:好的方面:重复提示不好。但如何避免在任务中输入正在处理的“完成”?需要另一个if-before任务来检查输入是否“完成”是;您在技巧1中的
中断
已经实现了这一点。两者基本相同。在一种情况下,您只有一个
input()
,如果您想更改输入提示,这会更容易,但在其他情况下,这完全没有区别。你能澄清你所说的“对于未来,什么情况会导致失败”是什么意思吗?你认为有一种方法会因为Python将来的变化而停止工作吗?普拉纳夫:谢谢。dup提示符上的好点是坏的。是的,我“担心”未来。试着在任何可能出错的事情之前想一想。我希望其他程序员的经验可能会指出一个潜在的问题。谢谢分享你的专业知识。这是一个相当基本的流量控制,所以不要期望它在将来会有很大的变化。在我看来,这两种方法都是非常适合未来的。使用一种能让你的船漂浮的方法。这两种方法基本上是相同的。在一种情况下,您只有一个
input()
,如果您想更改输入提示,这会更容易,但在其他情况下,这完全没有区别。你能澄清你所说的“对于未来,什么情况会导致失败”是什么意思吗?你认为有一种方法会因为Python将来的变化而停止工作吗?普拉纳夫:谢谢。dup提示符上的好点是坏的。是的,我“担心”未来。试着在任何可能出错的事情之前想一想。我希望其他程序员的经验可能会指出一个潜在的问题。谢谢分享你的专业知识。这是一个相当基本的流量控制,所以不要期望它在将来会有很大的变化。在我看来,这两种方法都是很好的未来证明。使用能让你的船漂浮的方法。阿克:派我去研究。谢谢任何情况下,你能想到哪里的结果不理想?气体:没有我能想到的-它是短,它是干净的,它是非常蟒蛇。我经常用它。阿克:派我去研究。谢谢任何情况下,你能想到哪里的结果不理想?气体:没有我能想到的-它是短,它是干净的,它是非常蟒蛇。我经常用它。