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
相关产品推荐
相关产品推荐

