0

所以我正在查询一个名为 golfDB 的数据库,它由一个名为 player 的表组成,其中包含 5 个字段:

  • 姓名(玩家姓名)
  • totalGross(每轮总分的总和)
  • totalRounds(已玩的回合数)
  • pars(制作的 pars 总数)
  • 小鸟(小鸟总数)

在下面的这个函数中,我试图找到拥有最多标准杆的球员。事实证明有两个玩家,所以我试图找出一种方法来更好地打印出来,因为目前它正在打印两次打印语句,但最后是不同的玩家。我希望能够将我指定为玩家的内容作为两个玩家的列表,然后以某种方式在打印声明中更连贯地打印玩家。有任何想法吗?

def queryDBpars(cursor):
    """find out which player had the most pars"""
    cursor.execute('select name, pars from players where pars = (select max(pars) from players)')
    playerPars= cursor.fetchall()
    for items in playerPars:
        players= (items[0])
        print('The player(s) with the most pars is/are', players)
4

2 回答 2

3

您可以使用str.join()组合名称:

playerPars = cursor.fetchall()
print('The player(s) with the most pars is/are',
      ', '.join(p[0] for p in playerPars))

这将名称与它们之间的逗号连接起来。

于 2013-04-25T15:51:32.260 回答
1

您可以将玩家存储在列表中,并在打印语句中使用join来显示组合列表。

players = list()
for items in playerPars:
    players.append(items[0])
print('The player(s) with the most pars is/are', ', '.join(players))

如果你想让它更优雅,你可以使用list comprehension

players = [player[0] for player in playerPars]

它会输出:The player(s) with the most pars is/are player1, player2

如果您想检查玩家数量以便正确格式化文本,您可以执行以下操作。

if len(players) > 1:
    print('The player(s) with the most pars are', ', '.join(players))
elif len(players) == 1:
    print('The player with the most pars is %s' % players[0])
于 2013-04-25T15:51:55.917 回答