<p>我不是Python方面的专家,但这是我的两分钱:</p>
<ol>
<li><code>formatted_name = get_formatted_name(f_name, l_name)</code>再次启动整个过程,这意味着它永远不会到达最后一个<code>print</code>语句。
它反复循环相同的函数,直到用户输入“q”作为他们的名字或姓氏,在这种情况下,它在任何可能的情况下都不会到达<code>print</code>。
请注意,请求用户的<code>input</code>的函数和试图<code>print</code>输出用户名的函数是相同的-递归</李>
<li><code>while True:</code>对我来说似乎毫无意义,除非你在练习和学习Python。代码不断询问用户的名字和姓氏,即使他们同时给出了这两个名字。从<code>while</code>循环中退出<code>break</code>的唯一方法是输入“q”作为任一名称</李>
</ol>
<p>我的解决方案,如果你可以这么说:</p>
<p>使用<code>while</code>循环:</p>
<pre><code>def get_formatted_name():
f_name = ""
l_name = ""
while not f_name and not l_name:
print("\nPlease tell me your name:")
print("(enter 'q' at any time to quit)")
f_name = input("First name: ")
if f_name == 'q':
break
l_name = input("Last name: ")
if l_name == 'q':
break
print(f"\nHello, {f_name} {l_name}!")
</code></pre>
<p>没有<code>while</code>,学习和实践的基础是:</p>
<pre><code>def get_formatted_name():
print("\nPlease tell me your name:")
print("(enter 'q' at any time to quit)")
f_name = input("First name: ")
l_name = input("Last name: ")
print(f"\nHello, {f_name} {l_name}!")
</code></pre>
<p>使用<code>while</code>版本可能更好,因为您可以确保用户同时输入两个名称,或者可以选择不输入其中一个</p>