当我运行此脚本时,它在else行中告诉IdentationError,为什么?

时间:2018-06-23 21:57:30

标签: python

#Returns the sum of num1 and num2
def add(num1, num2):
    return num1 + num2

#Returns the result of subtracting num1 - num2
def sub(num1, num2):
    return num1 - num2

#Returns the result of multiplying num1 * num2
def mul(num1, num2):
    return num1 * num2

#Returns the result of dividing num1 / num2
def div(num1, num2):
    return num1 / num2


def main():
    operation = input("What do you want to do(+,-,*,/): ")
    if(operation != '+' and operation != '-' and operation != '*' and operation != '/' ):
       #invaid operation
       print("you must enter a valid operation")
    else:
        var1 = int(input("emter num1: "))
        var2 = int(input("Enter num2: "))
            if(operation == '*'):
             print(add(var1, var2))
             elif(operation == '/'):
                print(div(var1, var2))
            elif(operation == '-'):
                print(sub(var1, var2))
            elif:
                print(mul(var1, var2)) 


main()

3 个答案:

答案 0 :(得分:0)

您的整个ifelif块是错误的。正确的意图如下所示:

else:
    var1 = int(input("emter num1: "))
    var2 = int(input("Enter num2: "))
    if(operation == '*'):
        print(add(var1, var2))
    elif(operation == '/'):
        print(div(var1, var2))

,依此类推。您应先考虑reading more about indentation in python,然后再继续。这不仅是Python所必需的,而且也是每种语言(据我所知)的最佳实践,以使您的代码更具可读性。

答案 1 :(得分:0)

Python使用空格来决定代码如何组合在一起。

这运行bar并且bazfoo为真:

如果foo:       酒吧()       baz()

如果bar为真,则运行foo,并且始终运行baz

if foo:
  bar()
baz()

这根本不起作用:

if foo:
  bar()
   baz()

如果缩进不一致,Python将抛出错误并放弃。

就您而言,这里的缩进似乎很糟糕:

if(operation == '*'):
 print(add(var1, var2))
 elif(operation == '/'):
    print(div(var1, var2))
elif(operation == '-'):
    print(sub(var1, var2))
elif:
    print(mul(var1, var2)) 

您的print缩进了少于三个空格(这是if语句的块的一部分),而后面的elif块缩进了三个空格(它应该与if语句处于同一级别)

if(operation == '*'):
  print(add(var1, var2))
elif(operation == '/'):
  print(div(var1, var2))
elif(operation == '-'):
  print(sub(var1, var2))
elif:
  print(mul(var1, var2)) 

顺便说一句,乘法和加法都被翻转了!

答案 2 :(得分:-1)

您的缩进被弄乱了。试试这个:

#Returns the sum of num1 and num2#Returns 
def add(num1, num2):
return num1 + num2
#Returns the result of subtracting num1 - num2
def sub(num1, num2):
return num1 - num2
#Returns the result of multiplying num1 * num2
def mul(num1, num2):
return num1 * num2
#Returns the result of dividing num1 / num2
def div(num1, num2):
return num1 / num2


def main():
    operation = input("What do you want to do(+,-,*,/): ")
    if(operation != '+' and operation != '-' and operation != '*' and operation != '/' ):
       #invaid operation
       print("you must enter a valid operation")
    else:
        var1 = int(input("Enter num1: "))
        var2 = int(input("Enter num2: "))
    if(operation == '*'):
        print(add(var1, var2))
    elif(operation == '/'):
        print(div(var1, var2))
    elif(operation == '-'):
        print(sub(var1, var2))
    else:
        print(mul(var1, var2)) 


main()