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

Python代码中缩进语法正确的else语句为何报无效语法错误

问题根因

你遇到的syntax error invalid syntax else报错并不是else本身写法有问题,而是if分支内的代码行缺少闭合的右括号,Python解析器无法识别if块的结束边界,才会误报else语法非法。

具体错误修正点

  • 原代码if分支内的赋值行:dict(zip(targ, df.minmax.values.tolist()) 末尾缺少1个右括号,修正为 dict(zip(targ, df.minmax.values.tolist()))
  • 原代码else分支内的赋值行:dict(zip(targ, df.zscore.values.tolist()) 末尾缺少1个右括号,修正为 dict(zip(targ, df.zscore.values.tolist()))
  • 额外存在的其他语法/逻辑错误:
    1. MinMaxScaler的方法调用错误:scaler.fit.transform 应该是 scaler.fit_transform,中间是下划线不是点
    2. zscore计算的索引逻辑错误:原代码把mean()、std()方法写到了attr变量后面,而不是目标列的Series对象后面,需要先提取目标列再做统计计算

修正后完整代码

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

def normalization(fname, attr, normType):
    result = {}
     
    df = pd.read_csv(fname)
    target_col = df[df.columns[attr]]
    targ = target_col.tolist()
    scaler = MinMaxScaler()
     
    df["minmax"] = scaler.fit_transform(df[[df.columns[attr]]])
    
    df["zscore"] = (target_col - target_col.mean()) / target_col.std(ddof=1)
    
    if normType == "min_max":
        result = dict(zip(targ, df.minmax.values.tolist()))
    else:
        result = dict(zip(targ, df.zscore.values.tolist()))
                                                
    return result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:39:03