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

Python类方法循环控制问题:如何让__Handle_conn方法输入错误时保持自身循环不返回上级方法

Python类方法循环控制问题:如何让__Handle_conn方法输入错误时保持自身循环不返回上级方法

嘿,我来帮你搞定这个问题!你的核心问题出在__Handle_conn方法的两个地方:一是非法输入(非0/1/2的选项)时直接用return退出了方法,导致回到上级的dash_command;二是没有处理用户输入非整数的情况,这种情况会直接抛出ValueError中断循环。

要实现输入错误时留在当前方法的循环里,只需要做两个关键修改:

  • 去掉else分支里的return,换成错误提示,让循环自然继续
  • 给获取用户输入的代码加上try-except捕获ValueError,处理非数字输入的情况

修改后的__Handle_conn方法代码如下:

def __Handle_conn(self,conn):
    print(self.main_dash_2)
    x = True
    while conn and x:
        try:
            inp = int(input("Send Your Command: "))
            if inp == 0:
                conn.close()
                x = False  # 标记循环结束,正常退出方法
            elif inp == 1:
                try:
                    conn.send(str.encode("cwd"))
                    response = conn.recv(1024)
                    print(response.decode())  # 解码后打印,避免显示字节串
                except Exception as e:
                    print(f"执行cwd命令出错: {e}")
            elif inp == 2:
                xx = str(input("Send Command [cmd + command]: "))
                try:
                    conn.send(str.encode(xx))
                    response = conn.recv(1024)
                    print(response.decode())
                except Exception as e:
                    print(f"执行自定义命令出错: {e}")
                print("格式示例: cmd dir")
            else:
                print("无效的命令选项!请输入0、1或2")
                # 这里不要return,循环会自动进入下一轮
        except ValueError:
            print("请输入有效的数字!")
            # 捕获非整数输入的异常,循环继续

修改说明:

  1. 移除return语句:原来的else分支里的return会直接退出方法,现在换成错误提示后,循环会回到开头,等待用户重新输入。
  2. 添加ValueError捕获:当用户输入字母、符号等非整数内容时,会触发这个异常,提示用户输入数字,同时不中断循环。
  3. 正常退出逻辑:只有当用户输入0时,关闭连接并将x设为False,让循环结束,方法正常退出回到上级,这是你期望的合法退出场景。
  4. 额外优化:给recv的字节串加上decode(),让输出内容更易读;给异常提示加上具体的错误信息,方便调试。

这样修改后,不管是输入无效数字还是非数字内容,程序都会留在__Handle_conn的循环里,直到用户输入0才会退出回到上级方法。

备注:内容来源于stack exchange,提问作者zbegain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 08:59:51