2016-10-10 6 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?"入力を実行し続け...

それは前のバランスとの取引を求めるユーザーの時間を無駄にすることなく、BEFORE Invalid_Transaction_Code ("Invalid Transaction Code!")などをスローするためだけにして、あなたがそれらのための入力を与えた後、それは私が起こるしたいものInvalid_Transaction_Code

を実行しないこと..です

ん意味がある?

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) 
+1

あなたは何を求めていますか?あなたのコードで何が問題になっていますか? – Nicarus

+0

Transaction_Code入力行の直後にmain()に適切な 'if'文を入れておく必要があります。 – jcfollower

+1

また、あなたの人生を楽にし、入力を大文字に変換するために入力を単一のケーシングにキャストします単一のケーシングと比較すると、 'Transaction_Code.lower()==" w "'だけが必要です。または、単に ''( 'w'、 'W')のTransaction_codeを実行してください。 – idjaw

答えて

4

です必要に応じてinput()に反対するか、またはvariable_nameを使用して出力をキャストして、トラブバックエラーを取り除きます。

+0

ありがとう、これは私が探していたものです。 – Alex

+1

@Alex次に答えを受け入れるべきです:-) – donkopotamus

+0

これは、プログラミングコースのイントロへの割り当て用です...私は提供された疑似コードから自分のコードをベースにしています。だから私はなぜそれがたくさんあることは確かだ/物事を行うためのより遅い方法 – Alex

1

あなたはまた、試してみて、(raw_input使用する場合があります):ご希望の行動のすべては、あなたがどのような場合にそれを求める必要がありますPrevious_Balanceを必要とするので、ここで

はコード

#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() 
関連する問題