Python实现While循环输入'q'时退出而非返回file_name值时终止
问题原因
你代码里的return file_name写在了while循环内部的有效输入分支中,return语句会直接终止整个函数运行,导致只要输入非空、非q的内容,就会立刻跳出循环返回结果,根本等不到输入q触发你预设的正常退出逻辑。
修复方案
把返回逻辑移到while循环外部,循环过程中只暂存有效输入、执行业务逻辑,等循环因输入q正常退出后再返回结果即可,修正后完整代码如下:
#!/usr/bin/env python3 def say_hola(): print("Hola, Mundo!") def dir_file_name(): active = True last_valid_name = "" while active: file_name = input("Enter WO # or 'q' to QUIT: ") if file_name.lower() == 'q': active = False elif file_name == '': print("Wrong entry -*-BLANKS-*- are not allowed...") continue else: say_hola() last_valid_name = file_name return last_valid_name dir_name = dir_file_name() print(f"\n\n\t{dir_name}\n")
执行逻辑说明
- 输入为空时,打印错误提示后直接进入下一轮循环,逻辑和原代码一致
- 输入为非q的合法内容时,仅调用
say_hola()、暂存当前输入值,不会中断循环 - 只有输入
q(不区分大小写)时,才会将循环标志位active设为False,等当前轮次执行完毕后while循环正常退出 - 循环完全结束后才会执行返回逻辑,把最后一次输入的合法文件名返回
内容的提问来源于stack exchange,提问作者Lintegrare Linux-Integrare
相关产品推荐
相关产品推荐

