Python:根据IF语句的输出,在其自身之外执行不同的代码

Python:根据IF语句的输出,在其自身之外执行不同的代码,python,if-statement,while-loop,Python,If Statement,While Loop,如果我的_输入==“n”,我想让我的程序再次循环,这很好。 但是,如果我的else语句为真,我不希望它再次运行整个程序,而只是在my_输入变量处“启动” 我怎样才能做到这一点 def name_user_validation(): while True: full_name = input("What is your name? ") print(f"Hello {full_name}, nice to meet you.&q

如果我的_输入==“n”,我想让我的程序再次循环,这很好。 但是,如果我的else语句为真,我不希望它再次运行整个程序,而只是在my_输入变量处“启动”

我怎样才能做到这一点

def name_user_validation():
    while True:
        full_name = input("What is your name? ")
        print(f"Hello {full_name}, nice to meet you.")
        full_name.split()
        print(f"If I understood correctly, your first name is {full_name[0]} and your last name is {full_name[-1]}.")
    
        my_input = input("Is that right? (y/n) ")
        if (my_input == "y"):
            print("Great!")
            break
        elif my_input == "n":
            print("Oh no :(")
        else:
            print("Invalid input, try again.")
name_user_validation()

我误解了你的问题,我可能会重新构造你的代码,这样你就可以摆脱while循环,在需要的时候使用递归函数调用返回

像下面这样的

def name\u user\u validation():
全名=输入(“你叫什么名字?”)
打印(f“你好{全名},很高兴认识你。”)
full_name.split()#这行实际上没有任何作用
打印(f“如果我理解正确,您的名字是{full_name[0]},姓氏是{full_name[-1]}。”)
如果不接受输入():
名称\用户\验证()
def accept_input():
我的输入=输入(“是吗?(y/n)”)
如果我的_输入==“y”:
打印(“太好了!”)
返回真值
elif my_input==“n”:
打印(“哦,不:(”)
返回错误
其他:
打印(“输入无效,请重试。”)
接受输入()
名称\用户\验证()

添加另一个直到用户输入可接受的输入才终止的循环

def name\u user\u validation():
尽管如此:
全名=输入(“你叫什么名字?”)
打印(f“你好{全名},很高兴认识你。”)
全名.split()
打印(f“如果我理解正确,您的名字是{full_name[0]},姓氏是{full_name[-1]}。”)
尽管如此:
我的输入=输入(“是吗?(y/n)”)
如果(我的输入=“y”):
打印(“太好了!”)
打破
elif my_input==“n”:
打印(“哦,不:(”)
打破
其他:
打印(“输入无效,请重试。”)
如果my_input==“y”:
打破
名称\用户\验证()

编辑:仅当
my_input=y

您需要另一个
while
循环时,程序才会终止谢谢,但这不是我想要的。当my_input=“n”我希望它再次运行,而不是从my_输入变量运行。否则:我希望它在my_输入变量处重新运行。我明白了-我已经更改了我的答复!是的,你的方法看起来更干净,更容易理解。现在.split()不起作用,因为它不是一个列表。如果我使用“my_list=full_name.split()”由于某种原因,它变成了一个列表,我得到了第一个名字和姓氏(我认为即使没有变量也可以)。现在我只得到字符串的第一个和最后一个字符。
split()
接受一个关于拆分依据的参数-因此在您的情况下,您可能希望按空格拆分,所以
split(“”)
据我所知,deafult是空格,所以我不需要它。我的问题是
full\u name.split()
不能正常工作。它只有在我将它保存在一个新变量中时才能工作,比如
my\u list=full\u name.split()