2016-10-10 58 views
0

Transaction_Code == "W""w""D""d"的Python ELIF为了不工作,我想

如果不是,它应该运行Process_Invalid_Code(Previous_Balance)

正在发生的事情,但是如果是输入Transaction_Code!= "W""w""D""d"后,它将继续运行"What is your previous balance?""How much is the transaction amount?"输入...

只有到那时,你给那些输入它运行Invalid_Transaction_Code

后,我希望发生的是,它抛出Invalid_Transaction_Code ("Invalid Transaction Code!")前等不浪费用户的时间要求上余额和交易..

不有道理?

下面是代码

#The main function definition 

def main(): 
    Name = input("What is your name? ") 
    Account_ID = input("What is your account ID? ") 
    Transaction_Code = input("Press W or w for Withdrawal, Press D or d for Deposit: ") 
    Previous_Balance = float(input("What is your previous balance? ")) 
    Transaction_Amount = float(input("How much is the transaction amount? ")) 

    if Transaction_Code == "W" or Transaction_Code == "w": 
     Withdrawal_Process(Previous_Balance, Transaction_Amount) 
    elif Transaction_Code == "D" or Transaction_Code == "d": 
     Deposit_Process(Previous_Balance, Transaction_Amount) 
    else: 
     Process_Invalid_Code(Previous_Balance) 

#Defines the Deposit Process 

def Deposit_Process(Previous_Balance, Transaction_Amount): 
    New_Balance = Transaction_Amount + Previous_Balance 
    Print_Function(New_Balance) 


#Defines the Withdrawal Process 

def Withdrawal_Process(Previous_Balance, Transaction_Amount): 
    if Transaction_Amount > Previous_Balance: 
     print("Invalid Transaction: Not Sufficient Funds!") 
     New_Balance = Previous_Balance 
     Print_Function(New_Balance) 
    else: 
     New_Balance = Previous_Balance - Transaction_Amount 
     Print_Function(New_Balance) 

#The Invalid Code Function Definition 

def Process_Invalid_Code(Previous_Balance): 
    New_Balance = Previous_Balance 
    print ("Invalid Transaction Code!") 
    print ("Please type W or w for Withdrawal") 
    print ("or type D or d for Deposit") 
    Print_Function(New_Balance) 


#Defines the Print Function 

def Print_Function(New_Balance): 
    print ("Your balance is now $", format(New_Balance, '.2f')) 


#Call the main function 

main() 
+1

你在问什么?你的代码有什么问题? – Nicarus

+0

您需要在Transaction_Code输入行后面的main()中放入适当的'if'语句。 – jcfollower

+1

此外,让您的生活更轻松,并将您的输入强制转换为单个外壳(使用lower或upper)以将输入更改为大写或小写,并与单个外壳进行比较,那么您所要做的就是'Transaction_Code.lower()==“w”'。或者只是'Transaction_code'('w','W')' – idjaw

回答

4

因为所有你想要的操作需要Previous_Balance你必须在任何情况下提出要求:

def main(): 
    # never used, lets ask anyway 
    Name = input("What is your name? ") 

    # we need this information at a minimum 
    Previous_Balance = float(input("What is your previous balance? ")) 
    Transaction_Code = input("Press W or w for Withdrawal, Press D or d for Deposit: ") 

    # if its a withdrawal/deposit, find the amount and account 
    if Transaction_Code.upper() in "WD": 
     # we never use this Account_ID ... 
     Account_ID = input("What is your account ID? ") 
     Transaction_Amount = float(input("How much is the transaction amount? ")) 
     if Transaction_Code.upper() == "W": 
      Withdrawal_Process(Previous_Balance, Transaction_Amount) 
     else: 
      Deposit_Process(Previous_Balance, Transaction_Amount) 
    else: 
     # they've entered a bad code 
     Process_Invalid_Code(Previous_Balance) 
+0

谢谢,这是我正在寻找的。 – Alex

+1

@Alex那么你应该接受答案:-) – donkopotamus

+0

这是一个编程课程介绍的作业......我将我的代码从提供的伪代码中除去。因此,为什么我敢肯定很多这是不必要的/更慢的方式做事 – Alex

1

您可能也想尝试使用的raw_input()反对在必要时输入()或使用variable_name投射输出以摆脱tracback错误。