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

Python函数返回值异常求助:加载默认值函数未正确返回参数

问题分析与修复方案

Hey Andy,我帮你找到了代码里的两个关键问题,咱们一个个拆解:

1. 最核心的错误:lower方法没调用

你写的choice = input().lower是把lower这个方法本身赋值给了choice,而不是把输入的字符串转成小写。正确的写法必须是choice = input().lower()——加个括号才会执行这个方法,返回小写的输入字符串。

如果不加括号,choice是一个函数对象,永远不可能匹配yes或no集合里的字符串,哪怕你输入y也进不了对应的分支,函数最后会默认返回None,后续用这些值的函数自然会报错说输入无效。

2. 缺少其他分支的返回逻辑

你的函数只处理了用户输入yes的情况,当用户选no或者输入了乱七八糟的内容时,函数没有返回任何值,还是会返回None。这时候后续函数拿到None当参数,肯定出问题。

我给你改了代码,补充了这些逻辑,还加了循环处理无效输入的情况:

import sys

def load_default(question):
    yes = {"y", "yes"}
    no = {"n", "no"}
    while True:  # 循环直到用户输入有效选项
        sys.stdout.write(question)
        choice = input().lower()  # 修复:调用lower方法
        if choice in yes:
            S0 = 40
            K = 50
            r = 0.1
            sigma = 0.1
            T = 10
            return S0, K, r, sigma, T
        elif choice in no:
            # 手动输入分支,加了输入验证确保是数字
            try:
                S0 = float(input("请输入S0的值: "))
                K = float(input("请输入K的值: "))
                r = float(input("请输入r的值: "))
                sigma = float(input("请输入sigma的值: "))
                T = float(input("请输入T的值: "))
                return S0, K, r, sigma, T
            except ValueError:
                print("输入无效,请输入数字!")
        else:
            print("请输入Y/N或yes/no!")

# 调用函数并接收参数
params = load_default("Load default values (Y) or insert new ones manually (N)?")
# 后续可以这样传给其他函数:
# your_other_function(*params)

修复后的亮点:

  • 解决了lower方法未调用的问题,确保输入能正确匹配选项
  • 用循环处理无效输入,用户输错了会提示重新输入
  • 手动输入分支加了try-except,防止用户输入非数字导致崩溃
  • 无论用户选默认还是手动输入,都会返回有效的参数值,不会出现None的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:44:58