我是一个编程新手,仍在学习,可能错过了一些容易犯的错误。代码运行得非常好,直到它被假定为"print the last print" (printf"\nHello, {formatted_name}!"))
,不幸的是它没有这样做。。。正如我所说,我可能错过了一些明显的东西,我会感谢你的帮助。我试过def…():和def…(f_name,l_name)似乎都没有按我希望的方式工作
def get_formatted_name(f_name, l_name): / def get_formatted_name():
while True:
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
formatted_name = get_formatted_name(f_name, l_name)
print(f"\nHello, {formatted_name}!")
当您运行
formatted_name = get_formatted_name(f_name, l_name)
时,实际上是在从函数本身调用您所在的函数。这就是所谓的recursion
。要解决您的问题,我相信您希望将线路替换为:或者使用
format
的另一种方式:使用
fstring
:你可能想读一下recursion以便更好地理解它
我不是Python方面的专家,但这是我的两分钱:
formatted_name = get_formatted_name(f_name, l_name)
再次启动整个过程,这意味着它永远不会到达最后一个print
语句。 它反复循环相同的函数,直到用户输入“q”作为他们的名字或姓氏,在这种情况下,它在任何可能的情况下都不会到达print
。 请注意,请求用户的input
的函数和试图print
输出用户名的函数是相同的-递归李>while True:
对我来说似乎毫无意义,除非你在练习和学习Python。代码不断询问用户的名字和姓氏,即使他们同时给出了这两个名字。从while
循环中退出break
的唯一方法是输入“q”作为任一名称李>我的解决方案,如果你可以这么说:
使用
while
循环:没有
while
,学习和实践的基础是:使用
while
版本可能更好,因为您可以确保用户同时输入两个名称,或者可以选择不输入其中一个相关问题 更多 >
编程相关推荐