0

私は大きな問題を抱えており、私が書いたこのコードの何が問題なのか本当にわかりません。それは間違いなく入力ファイルに設定した入力と関係がありますが、私は壁にいて、本当にそうではありません.進め方がわからない

入力の名前エラーが発生しましたが、これは本が最初の預金を設定する方法を示している方法です. 入力ファイルはメインプログラムの下にあります。

私の質問は、私がメインで設定した入力の何が問題なのか誰か知っていますか? それらは正しいようですが、出力しようとするすべての変更に対して NameError: ABC123 is not defined が発生し続けます。

class BankAccount:
    def __init__(self, getbankaccount, inputAmount=0):
        self.__balance = inputAmount
        self.__numDeposits = 0
        self.__numWithdrawals = 0
        self.__totalDeposits = 0
        self.__totalWithdrawals = 0
        self.__getbankaccount=getbankaccount

    def getBalance(self):
        return self.__balance

    def getNumDeposits(self):
        return self.__numDeposits

    def getNumWithdrawals(self):
        return self.__numWithdrawals

    def getTotalDeposits(self):
        return self.__totalDeposits

    def getTotalWithdrawals(self):
        return self.__totalWithdrawals

    def getbankaccount(self):
        return self.__getbankaccount

    def Deposit(self,amount):
        self.__balance = self.__balance + amount
        self.__numDeposits = self.__numDeposits + 1
        self.__totalDeposits = self.__totalDeposits + amount
        return self.__balance

    def Withdrawal(self,amount):
        if (self.__balance >= amount):
            self.__balance = self.__balance - amount
            self.__numWithdrawals = self.__numWithdrawals + 1
            self.__totalWithdrawals = self.__totalWithdrawals + amount
            return True
        else:
            return False

def main():
    acctlist=[]
    account=input()
    amount=eval(input())
    type=input()

    while(type!='#'):
        if (type=='D'):
            account=input()
            amount=eval(input())
            for i in range(len(acctlist())):
                if (account==acctlist[i].getbankaccount()):
                    index=i
                acctlist[index].Deposit(amount)
                PrintSuccessfullTrans(account, type, amount, acctlist[index].getBalance())
        elif (type=='W'):
            account=input()
            amount=eval(input())
            for i in range(len(acctlist())):
                if (account==acctlist[i].getbankaccount()):
                    index=i
                    status=(acctlist[index].Withdrawal(amount))
                    if (status == True):
                        PrintSuccessfulTrans(account, type, amount, acctlist[index].getbalance())
                    else:
                        PrintDenied(account, type, amount, "<DENIED>")
        elif (type == 'B'):
            type=ConvertType(type)
            amount=eval(input)
            print(acctlist[i].getbankaccount(), amount)
        elif (type == 'T'):
            account1=input()
            account2=input()
            amount=eval(input())
            for i in range(len(acctlist())):
                if (accoun1t==acctlist[i].getbankaccount()):
                    index=i
                    acctlist[index].Deposit(amount)
                    if status == True:
                        print('Test1')
                    else:
                        print('Test2')
            for g in range(len(acctlist())):
                if (account2==acctlist[i].getbankaccount()):
                    index=g
                    acctlist[index].Withdrawal(amount)

        account=input()
        amount=eval(input())
        type=input()


def PrintSuccessfulTrans(account,type, amount, balance):
                typeName = ConvertType(type)
                print("{:8s}{:12}{:8.2f}{:12.2f}".format(account,typeName,amount,balance))


def PrintDenied(account,type,amount, balance):
                typeName = ConvertType(type)
                print("{:8s}{:12}{:8.2f}{:>12}".format(account,typeName,amount,balance))

def ConvertType(type):
                if (type == 'D'):
                    return "Deposit"

                elif (type == 'W'):
                    return "Withdrawal"

                elif (type == 'B'):
                    return "Balance"
main()
11
ABC123
500
DEF456
1000
XYZ999
2056
MNI612
2012
CKE909
1313
THM115
5783
WBS319
2041
GFL522
10238
JDT121
876
JFL216
9218
GRP904
820
W
JFL216
587.24
D
MNI612
420.45
D
XYZ999
214.38
W
THM115
1045.23
D
WBS319
258.30
W
JDT121
924.10
T
GFL522
JDT121
2000
B
GFL522
0
B
XYZ999
0
T
DEF456
ABC123
50.50
#
#
4

1 に答える 1

0

このような問題に直面したときは、Python をインタラクティブに呼び出して、少し試してみてください。

$ python
Python 2.7.3 (default, Mar 12 2013, 16:26:07) 
[GCC 4.2.1 20070831 patched [FreeBSD]] on freebsd9
Type "help", "copyright", "credits" or "license" for more information.
>>> input()
11
11
>>> input()
ABC123
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'ABC123' is not defined

ほら、最初の問題が再現されました。

raw_input()おそらくあなたは(またはpython 3.x、それが今何をしているのか)のようなものが欲しいでしょうinput

他のすべてについてコメントすることなく、ここで、ディスパッチループはタイプ「D」、「W」、「B」、および「T」もチェックしますが、「11」、「ABC123」などはチェックしないことに注意してください。 . おそらく、最初にアカウントリストを設定してから、文字コード化されたトランザクションを処理したいと思うでしょう。

于 2013-05-05T19:52:11.160 に答える