codeforces apiの使用を試みます


codeforcesが提供するapiを使用して、ユーザーがどのような問題を解決したかを簡単に理解しました.

before you know


how to install requests module
要求モジュールの説明
REST api

python requests module


python requestsモジュールはhttpリクエストを簡単にします.
codeforcesサイトのapiタブでcodeforces apiの説明を表示できます.
rest形式で設計する.
これは、パッケージサイトのapiの簡単な紹介です.
  • With Codeforces API you can get access to some of our data in machine-readable JSON format.
  • To access the data you just send a HTTP-request to address https://codeforces.com/api/{methodName}
  • only public data will be accessable via API
  • Script


    handleを次のPythonスクリプトに挿入すると、必要なhandleプールの問題情報が得られます.
    全部で何問正解したかを表示します.
    難易度で何問答えたかを示す.
    どんな言語でいくつかの問題に答えた.
    Latingのない問題をスキップしました.
    
    import requests
    
    #reference : https://codeforces.com/apiHelp/methods#user.status
    URL='https://codeforces.com/api/'
    method='user.status'
    payload={'handle':'tourist'}        #give user's handle as payload
    URI=URL+method
    r=requests.get(URI,payload)
    print(r.status_code)
    response=r.json()
    
    res=response['result']
    solved=[]
    
    for r in res:
        if r['verdict']=='OK':
            #print(r['problem'])
            if r['problem'].get('rating') is None:
                print("not rated problem : ",r['problem'])
                continue
    
            solved.append([r['problem']['index'],r['problem']['name'],r['problem']['rating'],r['programmingLanguage']])
    
    
    #def rating(s):
    #    return s[2]
    
    #solved.sort(key=rating)
    
    solved_per_rating={}
    solved_per_language={}
    solved_problem={}
    count=0
    
    for s in solved:
        if solved_problem.get(s[1]) is not None:
            continue
        count+=1
        if solved_per_rating.get(s[2]) is None:
            solved_per_rating[s[2]]=1
        else:
            solved_per_rating[s[2]]+=1
    
        if solved_per_language.get(s[3]) is None:
            solved_per_language[s[3]]=1
        else:
            solved_per_language[s[3]]+=1
    
    print("solved problem count : ",count)
    print("solved per problem rating : ",solved_per_rating)
    print("solved per language : ",solved_per_language)
    このように展示しますスクリプトを変更して、他の必要な情報を取得することもできます.