我用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)
答案 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)
如果我理解正确,您只需要将if
与elif
替换为if ac == 1:
...
elif ac == 2:
...
if ac == 3:
...
if ac == 4:
...
else:
...
:
{{1}}
每次计算后都不会打印“无效编号”。