Python 3中的其他语句总是运行

时间:2016-09-21 12:44:58

标签: python python-3.x if-statement

我用Python制作了一个基本的计算器,我遇到过这个问题。在计算完成后#34;无效数字"总是打印然后暂停发生。我认为这与新行打破 if 块有关,但我不确定。

任何帮助将不胜感激。 提前谢谢。

def badnum():
        print("Invalid Number")
        print("Press enter to continue")
        input("")
def main():
        print("Select an action ")
        print("1.) Add")
        print("2.) Subtract")
        print("3.) Multiply")
        print("4.) Divide")
        ac = int(input(">>>"))
        if ac == 1:
                print("First number :")
                fn = float(input(">>>"))
                print("Second number :")
                sn = float(input(">>>"))
                a = fn+sn
                print(a)
        if ac == 2:
                print("First number :")
                fn = float(input(">>>"))
                print("Second number :")
                sn = float(input(">>>"))
                a = fn-sn
                print(a)
        if ac == 3:
                print("First number :")
                fn = float(input(">>>"))
                print("Second number :")
                sn = float(input(">>>"))
                a = fn*sn
            print(a)
        if ac == 4:
                print("First number :")
                fn = float(input(">>>"))
                print("Second number :")
                sn = float(input(">>>"))
                a = fn/sn
                print(a)
        else:
                badnum()
print("\n"*100)
while True:
    try:
        main()
    except ValueError:
        badnum()
    except ZeroDivisionError:
        print("Infinity")
    print("\n"*100)

3 个答案:

答案 0 :(得分:2)

不,它与您编写代码的方式有关,请考虑使用if...elif

ac = int(input(">>>"))
if ac == 1:
        print("First number :")
        fn = float(input(">>>"))
        print("Second number :")
        sn = float(input(">>>"))
        a = fn+sn
        print(a)
elif ac == 2:
        print("First number :")
        fn = float(input(">>>"))
        print("Second number :")
        sn = float(input(">>>"))
        a = fn-sn
        print(a)
elif ac == 3:
        print("First number :")
        fn = float(input(">>>"))
        print("Second number :")
        sn = float(input(">>>"))
        a = fn*sn
        print(a)
elif ac == 4:
        print("First number :")
        fn = float(input(">>>"))
        print("Second number :")
        sn = float(input(">>>"))
        a = fn/sn
        print(a)
else:
        badnum()

<小时/> 说明之前,您正在检查ac == 1 ac == 4这两个都不是真的,因此执行了第二个else语句同样。使用if..elif构造可以省略这一点:一次,之前的比较之一变为真,其余的不再执行。

答案 1 :(得分:2)

你应该使用elif

if ac == 1:
    ...
elif ac == 2:
    ...
elif ac == 3:
    ...
elif ac == 4:
    ...
else:
    ...

答案 2 :(得分:0)

如果我理解正确,您只需要将ifelif替换为if ac == 1: ... elif ac == 2: ... if ac == 3: ... if ac == 4: ... else: ...

{{1}}

每次计算后都不会打印“无效编号”。