如何使用字典从函数中删除 KeyErrorr

问题描述 投票:0回答:0

我有一个函数,我想在其中从测试用例中返回某些键值。

这是功能(包括主要功能):

def main():
# initial roster
    brave_roster = {
        "Austin Riley": "AB: 615, R: 90, H: 168, HR: 38, AVG: 0.273",
        "Ronald Acuna": "AB: 467, R: 71, H: 124, HR: 15, AVG: 0.266",
  }

def add_player_to_dict(brave_roster,name,stats):
  name = input("Enter the name of the player you want to add:\n")
  
  if name not in brave_roster:
    stats = input("Please add stats:\n")
    brave_roster[name] = stats
    brave_roster.update([(name, stats)])
    print("Here's", [name],"'s stats:\n")
    for name, stats in brave_roster.items():
     print(name, ':', stats)
  else:
    print("That player is already on our roster.")
    
    return brave_roster[(name,stats)]
  
print(add_player_to_dict)

if __name__ == '__main__':
  print("\t ***  Braves Stats!  ***\n")
  print("Welcome to My Braves Stats!")
  
  brave_roster = {
    "Austin Riley": "AB: 615, R: 90, H: 168, HR: 38, AVG: 0.273",
    "Ronald Acuna": "AB: 467, R: 71, H: 124, HR: 15, AVG: 0.266",
  }
  name = main()
  choice = input("Please type your choice number:")
if (choice == "1"):
    lookup_player(brave_roster,name)
elif (choice == "2"):
      add_player_to_dict(brave_roster,name,)
else: 
    (choice == "3")
    delete_in_dict(brave_roster,name)
    

以下是我尝试运行的测试用例:

def test_add_player_sucess(self):
    test_dict = {
        "Austin Riley": "AB: 615, R: 90, H: 168, HR: 38, AVG: 0.273"
    }
    actual = {
        "Austin Riley": "AB: 615, R: 90, H: 168, HR: 38, AVG: 0.273",
        "Ronald Acuna": "AB: 467, R: 71, H: 124, HR: 15, AVG: 0.266"
    }
    expected = add_player_to_dict(test_dict, "Ronald Acuna", "AB: 467, R: 71, H: 124, HR: 15, AVG: 0.266")

    self.assertEqual(actual, expected)

  def test_add_player_duplicate(self):
    test_dict = {"Austin Riley": "AB: 615, R: 90, H: 168, HR: 38, AVG: 0.273"}
    actual = {"Austin Riley": "AB: 615, R: 90, H: 168, HR: 38, AVG: 0.273", "Austin Riley(2)": "AB: 350, R: 20, H: 120, HR: 5, AVG: 0.214"}
    expected = add_player_to_dict(test_dict, "Austin Riley", "AB: 350, R: 20, H: 120, HR: 5, AVG: 0.214")
    self.assertEqual(actual, expected)

执行程序后,我收到此消息:

Traceback (most recent call last):
   line 108, in test_add_player_duplicate
    expected = add_player_to_dict(test_dict, "Austin Riley", "AB: 350, R: 20, H: 120, HR: 5, AVG: 0.214")
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 line 35, in add_player_to_dict
    return brave_roster[(name,stats)]
           ~~~~~~~~~~~~^^^^^^^^^^^^^^
KeyError:

我做错了什么?

python python-3.x function return keyerror
© www.soinside.com 2019 - 2024. All rights reserved.