Python如何让函数内的input仅在满足if条件时被调用
问题根因
核心原因是多条件判断语法错误:
你写的判断语句 if Action == 'Multiplication' or 'Addition' or 'Subtraction' or 'Division' and not 'Exponential': 不符合Python的条件判断规则:
- Python中,非空字符串的布尔值恒为
True,所以or 'Addition'这类写法会让整个判断条件永久成立,不管你选择什么操作,都会执行multaddsubdiv()函数,自然会触发前两个输入弹窗。 - 你写的
and not 'Exponential'完全不生效:'Exponential'是非空字符串,not 'Exponential'的结果是False,但前面的or条件已经恒为真,整体判断结果还是真。
修正方案
修改多条件判断的写法即可,同时可以优化冗余的类型转换逻辑,完全保留你原本的输出效果:
def menu(): print("Select from the following: ") print('Multiplication') print('Addition') print('Subtraction') print('Division') print('Exponential') Action = input("Selected Action: ") return Action # 用返回值接收操作类型,避免不必要的全局变量 Action = menu() def multaddsubdiv(): alpha = float(input("First Number: ")) beta = float(input("Second Number: ")) if Action == "Multiplication": print('The product of', alpha, '&', beta, 'Is', alpha * beta) if Action == "Addition": print('The sum of', alpha, 'Plus', beta, 'Is', alpha + beta) if Action == "Subtraction": print("The difference of", alpha, 'Minus', beta, 'Is', alpha - beta) if Action == "Division": print("The quotient of", alpha, 'Divided by', beta, 'Is', alpha / beta) # 修正后的判断逻辑 if Action in ['Multiplication', 'Addition', 'Subtraction', 'Division']: multaddsubdiv() def exponent(): gamma = float(input("Base Number: ")) delta = float(input("Exponent: ")) print(gamma, 'To the Power of', delta, 'Is: ', gamma ** delta) if Action == "Exponential": exponent()
内容的提问来源于stack exchange,提问作者Nicholas Lee
相关产品推荐
相关产品推荐

