Python中如何根据IF判断结果仅执行指定代码段而非重跑整个循环
实现方案
你可以通过嵌套一层专属的确认输入循环来实现需求,同时注意你原有代码存在一处逻辑错误:full_name.split()没有赋值给变量,直接取full_name[0]实际是取姓名整个字符串的第一个字符,而非拆分后的名,需要同步修正。
修改后可运行的完整代码如下:
def name_user_validation(): while True: full_name = input("What is your name? ") print(f"Hello {full_name}, nice to meet you.") # 修正split的返回值接收问题 name_parts = full_name.split() print(f"If I understood correctly, your first name is {name_parts[0]} and your last name is {name_parts[-1]}.") # 内层循环专门处理确认输入验证 while True: my_input = input("Is that right? (y/n) ") if my_input == "y": print("Great!") return elif my_input == "n": print("Oh no :(") # 跳出内层循环,回到外层重新输入姓名 break else: print("Invalid input, try again.") # 不跳出内层循环,直接重新执行确认输入步骤 name_user_validation()
逻辑说明
- 外层循环管控完整的姓名输入+确认全流程,当用户输入
n时,会跳出内层循环回到外层,重新执行姓名询问逻辑,符合你原有正常逻辑 - 内层循环仅管控y/n的输入校验,输入无效时只会触发内层循环重新执行,永远不会回到外层的姓名输入步骤,完全满足你只重跑确认输入的需求
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

