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

Python函数输入逻辑调整:解决未定义变量c、d的问题

问题解决思路及修正代码

错误原因分析

  • 你写的search函数默认参数用了c和d,但这俩变量在函数定义时还没创建,Python会直接报未定义错误。
  • start函数里没真正获取用户输入,只是把提示语当默认参数,而且用户输入的是字符串,直接和整数1比较永远不匹配。
  • search函数里的c、d是局部变量,和默认参数里的名字重复,逻辑完全混乱。

修正后的代码

import xlrd

# 先加载Excel文件,加r避免路径转义字符问题
esme_file = r'D:\python\project1\data1.xlsx'
wb = xlrd.open_workbook(esme_file)
sh = wb.sheet_by_index(0)

def start():
    # 获取用户指令,处理输入非数字的异常情况
    try:
        user_choice = int(input("if you want to search type 1: "))
        if user_choice == 1:
            search()
        else:
            print("please type 1")
    except ValueError:
        print("please type a valid number")

def search():
    # 直接在函数内获取搜索关键词和列索引,无需默认参数
    c = str(input('word: '))
    try:
        d = int(input('column: ')) - 1
        # 检查列索引是否在合法范围内
        if d < 0 or d >= sh.ncols:
            print(f"column index out of range, valid columns are 1 to {sh.ncols}")
            return
        ourlist = []
        for i in range(sh.nrows):
            ourlist.append(sh.cell_value(i, d))
        print(f"Found {ourlist.count(c)} matches")
    except ValueError:
        print("please type a valid number for column")

# 启动程序
start()

关键改动说明

  • 移除search函数的默认参数,直接在函数内部获取用户输入,彻底解决变量未定义问题。
  • start函数内部真正获取用户输入并转成整数,增加异常处理防止输入非数字内容崩溃。
  • 给文件路径加r前缀,避免反斜杠被识别为转义字符。
  • 新增列索引合法性检查,避免用户输入超出Excel实际列数的数值。
  • 优化输出提示,让结果更直观清晰。

内容的提问来源于stack exchange,提问作者Farhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:45:51