如何终止Python中loop_of_user函数关联的while循环?
终止Python While循环的简单方法
我需要终止while循环,尝试使用status语句实现但未成功,想了解终止while循环的最简单方法。以下是我的代码:
def loop_of_user(my_details): """_summary_ the function do a variety of actions on the the variable my_detailes :my_details (dict): dictionary of detailes on mariha """ num = int(input()) if num == 1: print(my_details["first_name"]) elif num == 2: print(my_details["birth_date"][3:5]) elif num == 3: print(len(my_details["hobbies"])) elif num == 4: print(my_details["hobbies"][-1]) elif num == 5: my_details["hobbies"].append("cooking") print(my_details["hobbies"]) elif num == 6: print(tuple_birth_date(my_details["birth_date"])) elif num == 7: my_details ["age"] = calculate_age(my_details["birth_date"]) print(my_details["age"]) else: return "break" def main(): mariah_details = {"first_name" : "mariah", "last_name" : "carey", "birth_date" : "27.03.1970", "hobbies" : ["sing", "compose", "act"]} status = "" while status != "break": loop_of_user(mariah_details) if __name__ == "__main__": main()
我尝试通过status变量和else分支返回"break"来终止循环,但循环仍持续执行,希望得到帮助。
问题原因
你的代码中,loop_of_user函数确实返回了"break",但你没有把这个返回值赋值给status变量,导致status始终是空字符串,循环条件status != "break"永远成立,循环无法终止。
最简单的两种解决方法
方法1:修复原有status变量方案
只需要在调用函数时,将返回值赋值给status即可:
def main(): mariah_details = {"first_name" : "mariah", "last_name" : "carey", "birth_date" : "27.03.1970", "hobbies" : ["sing", "compose", "act"]} status = "" while status != "break": status = loop_of_user(mariah_details) # 接收函数返回值,更新status
方法2:直接使用break语句(更简洁)
不需要额外的status变量,直接在循环内部判断终止条件,用break跳出循环。可以调整函数返回布尔值来控制循环:
def loop_of_user(my_details): num = int(input()) if num == 1: print(my_details["first_name"]) elif num == 2: print(my_details["birth_date"][3:5]) elif num == 3: print(len(my_details["hobbies"])) elif num == 4: print(my_details["hobbies"][-1]) elif num == 5: my_details["hobbies"].append("cooking") print(my_details["hobbies"]) elif num == 6: print(tuple_birth_date(my_details["birth_date"])) elif num == 7: my_details ["age"] = calculate_age(my_details["birth_date"]) print(my_details["age"]) else: return True # 返回True表示需要终止循环 return False # 返回False继续循环 def main(): mariah_details = {"first_name" : "mariah", "last_name" : "carey", "birth_date" : "27.03.1970", "hobbies" : ["sing", "compose", "act"]} while True: if loop_of_user(mariah_details): break # 满足终止条件直接跳出循环
如果想更简化,也可以把输入逻辑直接放到main函数里,省去函数返回值的处理:
def main(): mariah_details = {"first_name" : "mariah", "last_name" : "carey", "birth_date" : "27.03.1970", "hobbies" : ["sing", "compose", "act"]} while True: num = int(input()) if num == 1: print(mariah_details["first_name"]) elif num == 2: print(mariah_details["birth_date"][3:5]) elif num == 3: print(len(mariah_details["hobbies"])) elif num == 4: print(mariah_details["hobbies"][-1]) elif num == 5: mariah_details["hobbies"].append("cooking") print(mariah_details["hobbies"]) elif num == 6: print(tuple_birth_date(mariah_details["birth_date"])) elif num == 7: mariah_details ["age"] = calculate_age(mariah_details["birth_date"]) print(mariah_details["age"]) else: break # 输入非指定数字,直接终止循环
内容的提问来源于stack exchange,提问作者user20315313
相关产品推荐
相关产品推荐

