2
3

[python] 縄跳びの回数を入力順に順位を出力する①

Last updated at Posted at 2024-02-15

1分間の縄跳びの回数を入力順に並び替える処理

はじめに

標準入力で入力したデータを順位付けするプログラムをPythonで実装しました。

ソースコード

実装したソースコードを表示します。

#################################
####  並び替え処理
#################################

def errormsg1():
  print("0より大きい整数を入力してください")

def setValue(num):
    flag1 = 0
    if num > 0:
      return flag1
    else:
      flag1 += 1
      return flag1


def main():
  print("データ数を0より大きい整数で入力してください")
  while True:
    try:
      num = int(input())
      result1 = setValue(num)
      if result1 == 0:
        break
      else:
        raise ValueError
    except TypeError:
      errormsg1()
    except ValueError:
      errormsg1()

  array1 = []
  for i in range(num):
    print("1分間の縄跳びの回数を0より大きい整数で入力してください")
    while True:
      try:
        data = int(input())
        result2 = setValue(data)
        if result2 == 0:
          break
        else:
          raise ValueError
      except TypeError:
        errormsg1()
      except ValueError:
        errormsg1()

    array1.append(data)

  #回数データを降順に並び替える
  array2 = sorted(array1,reverse=True)
  array3 = []
  degree = 0
  before_value = 0
  count = 1
  # 順位配列を作成する
  for j in list(array2):
    if not j == before_value:
        degree += count
        count = 1
    else:
        count += 1
    array3.append(degree)
    before_value = j

  # 順位を表示する
  count2 = 1
  for k in list(array1):
      elem = array2.index(k)
      print(f"{count2}番目に入力したデータは{array3[elem]}位です")
      count2 += 1
if __name__ == "__main__":
  main()

元の配列を残したいので、降順に並び替えた配列を作り、並び替えた配列で順位配列を作成し、順位を標準出力に出力する。

最後に

データベースなりExcelのマクロでやれば簡単ですが、Pythonのプログラムだけでどれだけできるか挑戦しました。

2
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3