Python ATM Else和Elif错误

时间:2014-05-12 18:12:13

标签: python if-statement

我最近在Python 3.3.3中遇到了Else和Elif语句的问题。

这是我的代码:

# ATM was programmed by Jamie Mathieson

# introduction

sleep (1)

print ("-----------------------------------------------")
print ("\n                  ATM                ")
print ("\n-----------------------------------------------")

sleep (3)

print ("\nWelcome to ATM. ATM is a mathematical system that handles data.")

sleep (5)

print ("\n Your ATM card has is being inserted. Please wait...")

sleep (3)

print ("Your ATM card has been inserted.")

sleep (5)

print ("Type 'options' to view available commands.")

# variables

balance = print("Balance  £", money)

money = 200

options = ("Options: 1) Withdraw <amount> 2) Deposit <amount> 3) Balance 4) Exit")

# statements

option=int(input("Please enter an option: "))

if Option==1:
    print("Balance  £", money)

if Option==2:
    print("Balance  £", money)
    Withdraw=float(input("Please enter the amount of money you would like to withdraw: £ "))
    if Withdraw>0:
        newbalance=(money-Withdraw)
        print("New Balance: £",remainingbalance)
        elif: Withdraw>money
            print("No Balance Remaining")
        else:
            print("Withdraw canceled.")

if Option==3:
    print("Balance  £", money)
    Deposit=float(input("Please enter the amount of money you would like to deposit: £ "))
    if Deposit>0:
        newbalance=(money+Deposit)
            print("New Balance: £",newbalance)
    else:
            print("Deposit canceled.")

if Option==4:
    print("ATM is ejecting your card. Please wait...")
    sleep(5)
    exit()

我得到的错误是“语法无效”,它突出显示了Else和Elif语句。我做错了什么?

3 个答案:

答案 0 :(得分:0)

你必须把:放在最后,并更正缩进。

if Option==2:
    print("Balance  £", money)
    Withdraw=float(input("Please enter the amount of money you would like to withdraw: £ "))
    if Withdraw>0:
       newbalance=(money-Withdraw)
       print("New Balance: £",remainingbalance)
    elif Withdraw>money:
        print("No Balance Remaining")
    else:
        print("Withdraw canceled.")

答案 1 :(得分:0)

代码有几个问题。正如@Daniel指出的那样,你的缩进必须得到纠正。此外,elif块的条件放在冒号后面。

除此之外,您还要将用户的响应分配给名为option的变量,然后在Option上写入条件。这是两件不同的事情。

最后balance = print("Balance £", money)会抛出错误。看起来您正在尝试将balance定义为打印“余额£”后跟余额金额的函数。如果是这样,你可以这样做:

balance = lambda x: print("Balance  £{}".format(x))

修改:要回答您的问题:sleep,请使用

from time import sleep

答案 2 :(得分:0)

为True时

   # Reading id from user
   id = int(input("\nEnter account pin: "))

   # Loop till id is valid
   while id < 1000 or id > 9999:
       id = int(input("\nInvalid Id.. Re-enter: "))

   # Iterating over account session
   while True:

       # Printing menu
       print("\n1 - View Balance \t 2 - Withdraw \t 3 - Deposit \t 4 - Exit ")

       # Reading selection
       selection = int(input("\nEnter your selection: "))

       # Getting account object
       for acc in accounts:
           # Comparing account id
           if acc.getId() == id:
               accountObj = acc
               break

       # View Balance
       if selection == 1:
           # Printing balance
           print(accountObj.getBalance())

       # Withdraw
       elif selection == 2:
           # Reading amount
           amt = float(input("\nEnter amount to withdraw: "))
           ver_withdraw = input("Is this the correct amount, Yes or No ? " + str(amt) + " ")

           if ver_withdraw == "Yes":
               print("Verify withdraw")
           else:
               break

           if amt < accountObj.getBalance():
              # Calling withdraw method
              accountObj.withdraw(amt)
              # Printing updated balance
              print("\nUpdated Balance: " + str(accountObj.getBalance()) + " n")
           else:
                print("\nYou're balance is less than withdrawl amount: " + str(accountObj.getBalance()) + " n")
                print("\nPlease make a deposit.");

       # Deposit
       elif selection == 3:
           # Reading amount
           amt = float(input("\nEnter amount to deposit: "))
           ver_deposit = input("Is this the correct amount, Yes, or No ? " + str(amt) + " ")

           if ver_deposit == "Yes":
              # Calling deposit method
              accountObj.deposit(amt);
              # Printing updated balance
              print("\nUpdated Balance: " + str(accountObj.getBalance()) + " n")
           else:
               break

       elif selection == 4:
           print("nTransaction is now complete.")
           print("Transaction number: ", random.randint(10000, 1000000))
           print("Current Interest Rate: ", accountObj.annualInterestRate)
           print("Monthly Interest Rate: ", accountObj.annualInterestRate / 12)
           print("Thanks for choosing us as your bank")
           exit()

       # Any other choice
       else:
           print("nThat's an invalid choice.")

主要功能

main()