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

Python TypeError求助:mock_input_output_start参数不匹配问题

修复硬币兑换程序的TypeError问题

这个TypeError并非你的硬币兑换业务代码本身的问题,而是测试时使用的模拟(mock)函数参数定义不匹配导致的。报错信息里的mock_input_output_start.<locals>.<lambda>()提示你在模拟print或input时,定义的lambda函数只接受1个参数,但实际代码调用时传递了多个参数。

修正后的业务代码

你的核心兑换逻辑是正确的,仅需调整几处细节(拼写错误、错误提示准确性、用户输入兼容性):

def coin_calc(change):
    quarters = change // 25
    change = change % 25
    dimes = change // 10
    change = change % 10
    nickels = change // 5
    change = change % 5
    pennies = change
    return quarters, dimes, nickels, pennies

while True:
    change = input("Enter change amount to convert: ")
    if str(change).isnumeric():
        change = int(change)
        if change < 100:
            quarters, dimes, nickels, pennies = coin_calc(change)
            print(quarters, "quarter(s)")
            print(dimes, "dime(s)")
            print(nickels, "nickel(s)")  # 修正拼写错误:nickle → nickel
            print(pennies, "penny" if pennies == 1 else "pennies")  # 优化单复数显示
            print("Want to calculate another amount? (y/n): ", end="")
            answer = input()
            if answer.lower() == "n":  # 兼容小写n输入
                print("Bye!")
                break
        else:
            print("Error! Amount must be less than 100, please try again.")
    else:
        print("Error! Invalid integer entered, please try again.")

修复测试时的TypeError

根据报错信息,问题出在你的测试代码中对print或input的模拟:

  • 如果是模拟print函数:
    代码中多次调用print(a, b)(传递2个参数),但你定义的mock lambda只接受1个参数。需要改成支持任意数量参数的形式:
    # 错误写法(仅接受1个参数)
    mock_print = lambda x: None
    # 正确写法(接受任意数量参数)
    mock_print = lambda *args: None
    
  • 如果是模拟input函数:
    input可以接受1个可选的prompt参数(比如input("Enter...")),如果你的mock lambda强制要求1个参数,但代码中存在input()(无参数调用),也会触发参数不匹配。改成支持可选参数的形式:
    # 错误写法(强制要求1个参数)
    mock_input = lambda prompt: "50"
    # 正确写法(支持无参数调用)
    mock_input = lambda prompt=None: "50"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:40:38