我一直在用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)
使用Python3.10+可以使用match语句:
在Python 3.10之前
您应该使用
elif
:解释:之前,您正在检查
ac == 1
和{else
语句也被执行。在if..elif
构造中可以忽略这一点:一旦前面的一个比较变为真,其余的就不再执行了。如果我理解正确,您只需要将第二个和更多的
if
替换为elif
:每次计算后都不会打印“无效数字”
相关问题 更多 >
编程相关推荐