データベースにクエリを実行するプログラムを作成しようとしています。データベースは golfDB でplayers
、5 つのフィールドを持つ1 つのテーブルで構成されています。
name
(プレイヤー名)totalGross
(各ラウンドの総得点の合計)totalRounds
(プレイしたラウンド数)pars
(合計パー数)birdies
(合計バーディー数)
私のプログラムは、パー数が最も多いプレーヤー、入力されたプレーヤーの平均スコア (totalGross/totalRounds) を出力し、合計グロス スコアの順にプレーヤーをリストする必要があります。
パー数が最も多いプレーヤーを出力する方法が本当にわかりません。現在、私が持っているコードは、リストのリストを出力しており、それぞれにプレーヤーとそのパーが含まれています。私が試したすべてのことは数字を選択するだけであり、それらがどのプレーヤーに属しているかに戻ることができないため、それらをパーで注文してから最も高いものを選択する方法がわかりません.
パーの数だけでリストのリストを並べ替えて、プレーヤーを印刷する方法を知っている人はいますか?
import sqlite3
def getDBCursor(DB):
"""obtain and return a cursor for the database DB"""
conn= sqlite3.connect('/Users/tinydancer9454/Documents/python/golfDB')
cursor= conn.cursor()
return cursor
def queryDBpars(cursor):
"""find out which player had the most pars"""
cursor.execute('select name, pars from players where pars >= 0')
playerPars= cursor.fetchall()
def queryDBavgScore(cursor):
"""find the average score of inputed player"""
player= input("Please enter the player's name: ")
cursor.execute('select totalGross from players where name = ?', (player,))
totalGrossScore = cursor.fetchone()
cursor.execute('select totalRounds from players where name = ?', (player,))
totalRoundsScore = cursor.fetchone()
answer = totalGrossScore[0]/ totalRoundsScore[0]
print('The average score for', player, 'is', answer,)
def queryDBplayers(cursor):
"""lists the players in order of their total gross score"""
def main():
"""obtain cursor and query the database: golfDB"""
cursor= getDBCursor('golfDB')
queryDBpars(cursor)
queryDBavgScore(cursor)
queryDBplayers(cursor)
cursor.close()
そして、これは出力です:
[('Ruth', 16), ('Elena', 12), ('Jane', 12), ('Ezgi', 13), ('Ricki', 9), ('Margaret', 10), ('Rosalia', 16), ('Betty', 14)]