2016-08-07 10 views
0

私は、ユーザが通貨間で変換し、5つの異なる通貨の銀行口座を持つことを可能にするプログラムを持っています。Python - TypeError:*: 'NoneType'と 'int'のためのサポートされていないオペランドタイプ

ユーザーに銀行口座残高を表示しようとすると、「値」がNonetypeであるというメッセージが表示されますが、Noneが返されているかどうかはわかりません。

def USDCheckBalance(self, USDaccountName): 
    i = 0 
    while i < len(self.USDaccountList): 
     USDaccountCheck = self.USDaccountList[i].owner 
     if USDaccountName == USDaccountCheck: 
      USDaccount = self.USDaccountList[i] 
      return USDaccount.value 
      break 
     else: 
      i = i + 1 
    print("You don't have an account!") 

は、ユーザーが自分のUSDの銀行口座を開き、一つだけがある場合に作成されたリストがあります:

print("Check balance of which account?") 
print("1. USD | 2. EUR | 3. JPY | 4. GBP | 5. RUB") 
acntaction = input() 
if acntaction == "1": 
    if player.USDhasBankAccount == True: 
     value = bank.USDCheckBalance(player.USD) 
     print("Bank Account Balance: " + str(value * currencies[0].getVal()) + " " + currencies[0].getCurName() + ".") # prints bank account balance to player 
    else: 
     print("You do not have a USD bank account!") 

はここUSDCheckBalance方法です。私はこれを解決する方法を教えてください!

+2

あなたは完全なトレースバックを共有してくださいすることができます。 –

答えて

3

銀行口座がない場合、暗黙のうちにNoneを返します。その場合の最高使用例外:

def USDCheckBalance(self, USDaccountName): 
    for account in self.USDaccountList: 
     if USDaccountName == account.owner: 
      return account.value 
    raise KeyError("You don't have an account!") 

print("Check balance of which account?") 
print("1. USD | 2. EUR | 3. JPY | 4. GBP | 5. RUB") 
acntaction = input() 
if acntaction == "1": 
    try: 
     value = bank.USDCheckBalance(player.USD) 
     print("Bank Account Balance: {} {}.".format(value * currencies[0].getVal(), currencies[0].getCurName()) 
    except KeyError: 
     print("You do not have a USD bank account!") 
2

USDCheckBalanceメソッドがintを返すようにする必要があります。エラーを引き起こして何も返さない場合があるようです。 (「あなたは口座を持っていません」)

関連する問題