You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:54:05