【问题标题】:'NoneType' object is not iterable error in python3'NoneType' 对象在 python3 中不是可迭代的错误
【发布时间】:2021-08-20 00:30:18
【问题描述】:

我正在尝试编写一个代码,将我的输入作为命令(TEAM),(给定的团队名称),然后返回输入中给出的团队中正在比赛的球员人数。但是pycharm 给出了一个'NoneType' object is not iterable 错误,我不知道如何将它变成有效的代码。你能帮我找出哪里出错了吗? 顺便说一句,我认为即使问这个问题的方式也有错误,如果你分享给我,我会努力提高自己,提前谢谢!!

baseball_stats = [['Martin,Leonys', 'TEX', 147, 457, 66, 119, 21, 6, 8], ['Smoak,Justin', 'SEA', 131, 454, 53, 108 , 19, 0, 20], ['Ibanez,Raul', 'SEA', 124, 454, 54, 110, 20, 2, 29], ['Infante,Omar', 'DET', 118, 453, 54 , 144, 24, 3, 10], ['Bautista,Jose', 'TOR', 118, 452, 82, 117, 24, 0, 28], ['Blanco,Gregor', 'SF', 141, 452 , 50, 120, 17, 6, 3], ['Rosario,Wilin', 'COL', 121, 449, 63, 131, 22, 1, 21], ['Uggla,Dan', 'ATL', 136 , 448, 60, 80, 10, 3, 22], ['Moss,Brandon', 'OAK', 145, 446, 73, 114, 23, 3, 30], ['Tulowitzki,Troy', 'COL', 126, 446, 72, 139, 27, 0, 25 ], ['Mauer,Joe', 'MIN', 113, 445, 62, 144, 35, 0, 11], ['Overbay,Lyle', 'NYY', 142, 445, 43, 107, 24, 1 , 14], ['Pollock,AJ', 'ARI', 137, 443, 64, 119, 28, 5, 8], ['Drew, Stephen', 'BOS', 124, 442, 57, 112, 29 , 8, 13], ['Viciedo,Dayan', 'CWS', 124, 441, 43, 117, 23, 3, 14], ['Dirks,Andy', 'DET', 131, 438, 60, 112 , 16, 2, 9],

command, name = input().split()
def baseball_stat_machine(command, name):
  command=input()
  if command=="TEAM":
     name=input()
     for ply in baseball_stats:
          if name==ply[1]:
          result=baseball_stats.count(ply[0]
result = baseball_stat_machine(command, name)

if type(result) == int:
    print(result)

【问题讨论】:

  • 请显示您收到的准确和完整的错误信息。

标签: python-3.x list tuples typeerror


【解决方案1】:

如果找到玩家,您必须先输入信息,然后调用函数,最后打印结果

像这样

baseball_stats = [['Martin,Leonys', 'TEX', 147, 457, 66, 119, 21, 6, 8], ['Smoak,Justin', 'SEA', 131, 454, 53, 108, 19, 0, 20], ['Ibanez,Raul', 'SEA', 124, 454, 54, 110, 20, 2, 29], ['Infante,Omar', 'DET', 118, 453, 54, 144, 24, 3, 10], ['Bautista,Jose', 'TOR', 118, 452, 82, 117, 24, 0, 28], ['Blanco,Gregor', 'SF', 141, 452, 50, 120, 17, 6, 3], ['Rosario,Wilin', 'COL', 121, 449, 63, 131, 22, 1, 21], ['Uggla,Dan', 'ATL', 136, 448, 60, 80, 10, 3, 22], ['Moss,Brandon', 'OAK', 145, 446, 73, 114, 23, 3, 30], ['Tulowitzki,Troy', 'COL', 126, 446, 72, 139, 27, 0, 25], ['Mauer,Joe', 'MIN', 113, 445, 62, 144, 35, 0, 11], ['Overbay,Lyle', 'NYY', 142, 445, 43, 107, 24, 1, 14], ['Pollock,A.J.', 'ARI', 137, 443, 64, 119, 28, 5, 8], ['Drew,Stephen', 'BOS', 124, 442, 57, 112, 29, 8, 13], ['Viciedo,Dayan', 'CWS', 124, 441, 43, 117, 23, 3, 14], ['Dirks,Andy', 'DET', 131, 438, 60, 112, 16, 2, 9]]

def baseball_stat_machine(command, name):

  if command=="TEAM":

     for ply in baseball_stats:
          if name==ply[0]:
            result=baseball_stats.count(ply[0])
            return result
command=input("Enter command form example TEAM: ")
name=input("ENter a name: ")
result = baseball_stat_machine(command, name)
if type(result) == int:
    print(result)

这将计算您为 SEA 输入的 TEAM 是那里的两倍

baseball_stats = [['Martin,Leonys', 'TEX', 147, 457, 66, 119, 21, 6, 8], ['Smoak,Justin', 'SEA', 131, 454, 53, 108, 19, 0, 20], ['Ibanez,Raul', 'SEA', 124, 454, 54, 110, 20, 2, 29], ['Infante,Omar', 'DET', 118, 453, 54, 144, 24, 3, 10], ['Bautista,Jose', 'TOR', 118, 452, 82, 117, 24, 0, 28], ['Blanco,Gregor', 'SF', 141, 452, 50, 120, 17, 6, 3], ['Rosario,Wilin', 'COL', 121, 449, 63, 131, 22, 1, 21], ['Uggla,Dan', 'ATL', 136, 448, 60, 80, 10, 3, 22], ['Moss,Brandon', 'OAK', 145, 446, 73, 114, 23, 3, 30], ['Tulowitzki,Troy', 'COL', 126, 446, 72, 139, 27, 0, 25], ['Mauer,Joe', 'MIN', 113, 445, 62, 144, 35, 0, 11], ['Overbay,Lyle', 'NYY', 142, 445, 43, 107, 24, 1, 14], ['Pollock,A.J.', 'ARI', 137, 443, 64, 119, 28, 5, 8], ['Drew,Stephen', 'BOS', 124, 442, 57, 112, 29, 8, 13], ['Viciedo,Dayan', 'CWS', 124, 441, 43, 117, 23, 3, 14], ['Dirks,Andy', 'DET', 131, 438, 60, 112, 16, 2, 9]]

def baseball_stat_machine(command, name):

  if command=="TEAM":
    result=sum(ply[1].count(name) for ply in baseball_stats)  
    return result
   
command=input("Enter command form example TEAM: ")
name=input("ENter a name: ")
result = baseball_stat_machine(command, name)
if type(result) == int:
    print(result)

【讨论】:

  • 感谢您的帮助。我试过这个,但它不起作用。也许我应该解释得更好。我想给出一个输入,例如命令(即 TEAM)和一个随机团队的名称,然后返回给定团队中的玩家人数。这就是为什么我写 if name==ply[0]: result =baseball_stats.count(ply[0]) 但它也不起作用。感谢您的帮助,感谢您迄今为止的帮助,这让我大开眼界
  • 我加了个team count,原理一样,只是语法变了,搜索一下会发现很多有用的提示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 2016-09-11
  • 2014-10-09
  • 1970-01-01
  • 2020-03-18
  • 2013-12-01
  • 2019-01-10
相关资源
最近更新 更多