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

Python计算器函数调用报错:a和b未定义问题求助

问题分析与修复

错误点总结

  • gui函数不需要定义参数,它本身就是用来生成a和b的,传参完全多余,还会导致调用时出错。
  • 主循环里调用gui()后没接收返回值,直接用a和b当然会报“未定义”。
  • top函数内部重复调用gui(),会让用户重复输入数字,而且完全没用到传入的参数,逻辑混乱。
  • 用户输入的islem是字符串类型,和整数(比如1、5)做比较永远不成立,导致大部分分支逻辑触发不了。

修正后的完整代码

def top(a, b):
    return a + b

def cik(a, b):
    return a - b

def bol(a, b):
    return a / b

def carp(a, b):
    return a * b

def gui():  # 去掉多余的参数
    a = float(input("1. Sayıyı Giriniz:"))
    b = float(input("2. Sayıyı Giriniz:"))
    return a, b

while True:
    print("İşlemler:")
    print("1: Toplama")
    print("2: Çıkarma")
    print("3: Çarpma")
    print("4: Bölme")
    print("5: ÇIKIŞ")
    islem = input("İşlem Seçiniz:")
    # 改成字符串匹配,因为input返回的是字符串
    if islem in ("1", "2", "3", "4"):
        a, b = gui()  # 接收gui返回的a和b
        if islem == "1":
            print(a, "+", b, "=", top(a,b))
        elif islem == "2":
            print(a, "-", b, "=", cik(a,b))
        elif islem == "3":
            print(a, "*", b, "=", carp(a,b))
        elif islem == "4":
            print(a, "/", b, "=", bol(a,b))
    elif islem == "5":
        print("ÇIKIŞ YAPILIYOR...")
        break
    else:
        print("Geçersiz İşlem Numarası!!!")

额外优化建议

  • 可以给除法加个判断,避免除数为0的情况:
def bol(a, b):
    if b == 0:
        return "Hata: Sıfıra bölme yapılamaz!"
    return a / b

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:02:34