Day 104bisectで挿入位置を求める
Pythonコード
1import bisect2numbers = [1, 3, 5, 7, 9]3print(bisect.bisect(numbers, 6))4print(bisect.bisect_left(numbers, 3))5print(bisect.bisect_right(numbers, 3))6try:7 num = int(input('数字を入力してください:'))8 print(bisect.bisect(numbers, num))9except ValueError:10 print('数字以外の入力です。')
解説
- 行1〜2: bisectモジュールをインポートし、リストnumbersを定義します。bisectモジュールは、ソートされたリストに要素を挿入するための関数を提供します。numbersリストには、1、3、5、7、9という数字がソートされた順序で格納されています。int関数は、文字列を整数に変換する関数です。
- 行3〜5: bisect関数を使用して、リストnumbersに6、3を挿入する位置を調べます。bisect関数は、ソートされたリストに要素を挿入するための挿入位置を返します。bisect_left関数は、同じ要素が複数ある場合に、左側の挿入位置を返します。bisect_right関数は、同じ要素が複数ある場合に、右側の挿入位置を返します。
- 行6〜10: ユーザーに数字を入力してもらいます。入力された数字をint関数で整数に変換し、bisect関数でnumbersリストに挿入する位置を調べます。入力された数字が数字以外の場合、ValueError例外が発生し、数字以外の入力ですと表示します。input()関数は、ユーザーから入力を受け付ける関数です。print()関数は、画面に文字や値を表示する関数です。
- 行3〜10: 補足: print() は画面に文字や値を表示する関数です。
次に試してみよう
- リストに要素を挿入してみましょう。
- リストをソートしてみましょう。
- 別のリストを作成して、bisect関数で挿入位置を調べてみましょう。