4

コンピューター サイエンスのクラスで、Python の関数とパラメーターについて学び始めたところです。今、私のインストラクターは私たちにパラメーターの受け渡しを学ばせています。プログラムの膨大な要約を入力する代わりに、下の課題ガイドを再入力しました。

説明:このプログラムでは、ユーザーはクレジット カードの料金の入力、支払いの入力、または残高の表示を選択する必要があります。ユーザーがキーボードでコードを入力して選択を示すことができるようにします。

次の関数名を使用します。

  • enterValue ユーザーが値を入力します

  • addCharge 関数に渡された値が残高に追加されます

  • addPayment 関数に渡された値が残高から差し引かれます

  • showBalance クレジット カードの現在の残高が表示されます

適切なアクションのために、ユーザーに次のコードを入力してもらいます。

  • 料金を入力するための「C」

  • 支払いを入力するための「P」

  • 残高を示す「B」

  • 「Z」が入力されるまでトランザクションの入力を許可する

プログラム

balance = 0
def enterValue ():
    enter = input ("Enter a value.")
    return enter

def addCharge (enter,balance):
    balance = balance + enter
    return balance

def addPayment (enter,balance):
    balance = balance - enter
    return balance
def showBalance ():
    print "Your balance is... ", balance


transaction = raw_input ("Enter C for charges, P for payments, and B to show your balance. ") 
enterValue ()
while transaction != "Z":


    if transaction == "C":
        balance = addCharge(enter,balance)
        showBalance()        
    elif transaction == "P": 
        balance = addPayment (enter,balance)
        showBalance()
    elif transaction =="B":
        balance = enterValue()
        showBalance()
    transaction = raw_input ("Enter C for charges, P for payments, and B to show your balance. ") 

出力

Enter C for charges, P for payments, and B to show your balance. P

Traceback (most recent call last):
  File "/Users/chrisblive/Downloads/Charge_Braverman-2.py", line 26, in <module>
    balance = addPayment (enter,balance)
NameError: name 'enter' is not defined

(私の問題は、内部の値enterValue()が定義されていないことです。)

4

1 に答える 1

-1

この演習の主な目的は、関数にパラメーターを渡すことを理解することです。したがって、関数で必要なすべての変数をそれに渡すだけです! おおよそ、すべての関数には独自の名前空間があり、その中で別のレベルの値を使用する場合は、それをパラメーターとして渡し、下位レベルで再利用する場合はそれを返す必要があると言えます。

例えば:

###   Level "enterValue"   ###
def enterValue():
    return float(raw_input("Enter a value: "))
### End Level "enterValue" ###

###   Level "addCharge"   ###
def addCharge(enter, balance):
    balance = balance + enter
    return balance
### End Level "addCharge" ###

###   Level "showBalance"   ###
def showBalance(balance):
    print "Your balance is %f" % balance
### End Level "showBalance" ###

### Level "Mainlevel" ###
# This is where your program starts.
transaction = None
balance = 0.0
while transaction != "Z":
    transaction = raw_input("Enter C for charges, P for payments, and B to show your balance.\nEnter Z to exit: ").upper()

    if transaction == "C":
        enter = enterValue()
        balance = addCharge(enter, balance)
        showBalance(balance)
    elif transaction == "P":
        balance = addPayment(enter, balance)
        showBalance(balance)
    elif transaction == "B":
        showBalance(balance)
### End Level "Mainlevel" ###
于 2013-02-20T09:47:35.073 に答える