Python 3中的Else语句始终运行

2024-09-29 23:21:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用Python制作一个基本的计算器,我遇到了这个问题。计算完成后,始终打印“无效数字”,然后暂停。我认为这与新线突破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)

Tags: numberinputifmaindeffloatac计算器
3条回答

使用Python3.10+可以使用match语句:

match ac:
    case 1:
        ...
    case 2:
        ...
    case 3:
        ...
    case 4:
        ...
    case _:  # default
        ...

在Python 3.10之前

您应该使用elif

if ac == 1:
    ...
elif ac == 2:
    ...
elif ac == 3:
    ...
elif ac == 4:
    ...
else:
    ...
<>不,它与你编写代码的方式有关,用^ {CD1>}:

考虑这个问题。
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{},这两个语句不能同时为真,因此第二个else语句也被执行。在if..elif构造中可以忽略这一点:一旦前面的一个比较变为真,其余的就不再执行了。

如果我理解正确,您只需要将第二个和更多的if替换为elif

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

每次计算后都不会打印“无效数字”

相关问题 更多 >

    热门问题