質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • Python 3.x

    6387questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

テキストファイルを引数として選択ソートを行うとき

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 157
退会済みユーザー

退会済みユーザー

以前、テキストファイルを引数として、特定の書体で出力するコードについて質問させていただきました。

テキストファイルの例:左から 出席番号、名前、点数

727 Arai 12
1139 Aikawa 77
520 Kumano 100
87 Tanaka 0
2147 Ueda 77
89 Kinoshita 51
#coding:utf-8

import sys

f = open(sys.argv[1], "r")

class Record():
    def __init__(self, num:int, name:str, score:int):
        self.num = num
        self.name = name
        self.score = score

data = []
for row in f:
    num, name, score = row.split()
    num = int(num)
    name = str(name)
    score = int(score)
    data.append(Record(num, name, score))

f.close()    

print("____ソート前____")
def printdata():
    for r in data:
        print("{:4d},{:16s},{:3d}".format(r.num, r.name, r.score))
printdata()


以上のコードに選択ソートを追加して、以下のように点数降順に並び替えたいと思っています。

 520, Kumano     ,100
1139, Aikawa     ,77
2147, Ueda        ,77
  89, Kinoshita    ,51
 727, Arai           ,12
  87, Tanaka       , 0


選択ソートの理論は理解できたのですが、どのように上記のコードに組み込めばいいかがイマイチわかりません。scoreを整列させるためにはどのように考えればよろしいのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hayataka2049

    2018/06/09 20:59

    あと、動くコードを掲載してくれませんか・・・(fileのところ)

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2018/06/09 21:01

    失礼いたしました。訂正いたしました。

    キャンセル

  • hayataka2049

    2018/06/09 21:04

    では、自分で選択ソートを実装してみたコードとか載せていただければ、こちらとしてもそれに基づいてアドバイスできます。まずは自分で考えてやってみることです

    キャンセル

回答 1

+2

質問者さんの前提無視してpandasのソートを使って
やりたいことを実現してみました。参考程度に見てください。

import pandas as pd
from StringIO import StringIO

txt = StringIO("""727 Arai 12
1139 Aikawa 77
520 Kumano 100
87 Tanaka 0
2147 Ueda 77
89 Kinoshita 51""")

df = pd.read_csv(txt, sep=" ", names=["id", "name", "score"])
print(df)
"""
    id    name    score
0    727    Arai    12
1    1139    Aikawa    77
2    520    Kumano    100
3    87    Tanaka    0
4    2147    Ueda    77
5    89    Kinoshita    51
"""

print(df.sort_values(by=["score"], ascending=False))
"""

id    name    score
2    520    Kumano    100
1    1139    Aikawa    77
4    2147    Ueda    77
5    89    Kinoshita    51
0    727    Arai    12
3    87    Tanaka    0
"""

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/06/09 21:09

    二度とBAがつかない回答になってしまった・・・

    キャンセル

  • 2018/06/09 21:23

    あれま、なんだかごめんなさい

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    【rails】【DB】中間テーブル

    やりたいこと ・ユーザーが好きなゲームをフォロー出来る。  ・ユーザーはゲームをフォローする際、自身のゲームレベルをゲーム毎に登録しておける。  ・ゲームはユーザーをフォロー

  • 解決済

    Rails4.2でフォームにdate_selectやtime_selectを使うとパラメーターが取得...

    前提・実現したいこと Railsでデータの検索をする時にパラメーターを取得できず困っております。 リクナビやマイナビといった就職情報サイトの説明会を、複数サイトから説明会の

  • 解決済

    【Rails】【activerecord】createが正しく実行されない場合がある

    deviseを利用して、twitterのouth認証を実装したのですが、なぜか、正しく認証→新規登録出来ないケースが発生します。 関連する、user.rbとomniouth_

  • 解決済

    Pythonのthreadingにおける、終了時の処理

    前提・実現したいこと Pythonを使って、動画や画像を表示するGUIを作っています。その中で、みなさまのご支援を頂ながらカメラの画像を取り込んで再生できるところまで来ました。

  • 解決済

    【pyqy5】画像の表示方法を工夫したい

    python3を使っています。pyqt5で下のようなウィジットを作りたいです 黄色いボタンを押すと前後の画像が真ん中に来るようにしたいです。しかし、どうすればいいのかよく分か

  • 受付中

    ○○ is not definedが解決できない

    前提・実現したいこと Pythonの理解を深める為にjavaのコードを Pythonに書き換えております。 javaでは下記の関数はprivate関数でしたので __diges

  • 解決済

    Classを用いたときにエラーがでる

    生徒番号、名前、テストの点数が書かれたテキストファイルを引数として読み込んで、ある書式で出力するというコードを書いています。 テキストファイルは以下のような例です。 123

  • 解決済

    【Python】クラスの継承について

     前提・実現したいこと ・Python ・継承 ・super().の使い方 ・作成したクラスへの属性の追加  該当のソースコード class Pokemon: def

同じタグがついた質問を見る

  • Python 3.x

    6387questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。