Python問題集を解いてみよう!!

【Python問題集】No.1 奇数・偶数の判定、リストから値を削除

Python問題集No.1
目次

問題

自然数のリストを入力すると、そのリストから奇数をすべて削除したリストを出力するプログラムを作成せよ。

さらに、そのプログラムが正しく機能することを示す具体例を与えよ。

おすすめのレンタルサーバー

解答

解答を見る前に、一度ご自身で考え、コードを書いてみることをオススメします。

解答例1
def delete_odd(natural_number_list: list):
    result = []

    for number in natural_number_list:
        if number % 2 == 0:
            result.append(number)

    print(result)


sample_list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

sample_list_2 = [11, 13, 15, 17, 19, 12, 14, 16, 18, 20]

delete_odd(sample_list_1)

delete_odd(sample_list_2)
上記の実行結果
[2, 4, 6, 8, 10]
[12, 14, 16, 18, 20]
おすすめのPython参考書

解説

この問題のポイントは、

  • 奇数・偶数を判別する
  • 奇数の場合はリストから値を削除する

の2点です。

順番に見ていきましょう。

奇数・偶数を判別する

奇数か偶数かを判別する方法として最も一般的なのは2で割った余りをチェックする方法です。

余りが1なら奇数、余りが0なら偶数になります。

Python における余りを求める演算子は%です。

2で割った余りの結果をもとにif文を使用して条件分岐させます。

a = 144981 / 9

if a % 2 == 1:
    print('a は奇数です。')
elif a % 2 == 0:
    print('a は偶数です。')
    
print('a:',a)

上記の実行結果

a は奇数です。
a: 16109.0

奇数の場合はリストから値を削除する

続いて、リストからの値の削除です。

元々の問題は「奇数の場合はリストから値を削除する」ですが、今回の解答例では、

  • 新しいリストを用意する
  • 偶数の場合、新しいリストに追加する

とし、新しいリストに偶数だけ入れることで、元のリストから奇数を削除した新しいリストを作っています。

popメソッドやdel文を使って、元のリストから奇数を削除することもできますが、今回は、新しいリストを作って、そこに偶数を追加する、という方法を取りました。

リストへの値の追加はappendメソッドを使用します。

num_list = [1, 2, 3]

num_list.append(100)

print(num_list)

上記の実行結果

[1, 2, 3, 100]

ChatGPT に解いてもらった

ChatGPT にも解いてもらいました。

ChatGPT の解答

以下に、指定された条件に従ってPythonでプログラムを作成しました。このプログラムは、与えられた自然数のリストから奇数を削除して新しいリストを返します。

def remove_odds(numbers):
    even_numbers = [num for num in numbers if num % 2 == 0]
    return even_numbers

# 具体例
input_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
output_list = remove_odds(input_list)

print(f"入力リスト: {input_list}")
print(f"奇数を削除したリスト: {output_list}")

具体例として、入力リストに [1, 2, 3, 4, 5, 6, 7, 8, 9] を使用します。このプログラムを実行すると、以下のような出力が得られます。

入力リスト: [1, 2, 3, 4, 5, 6, 7, 8, 9]
奇数を削除したリスト: [2, 4, 6, 8]

この出力から、プログラムが正しく奇数を削除していることがわかります。

ChatGPT の解説

このプログラムは、与えられた自然数のリストから奇数を削除し、新しいリストに偶数だけを格納して返す機能を持ちます。以下に、プログラムの要点を解説します。

  1. def remove_odds(numbers): ここで、remove_odds という関数を定義しています。この関数は、リスト numbers を引数として受け取ります。
  2. even_numbers = [num for num in numbers if num % 2 == 0] この行では、リスト内包表記(list comprehension)を使って、入力リスト numbers から偶数だけを取り出し、新しいリスト even_numbers に格納しています。条件 num % 2 == 0 は、数値 num が2で割り切れる(偶数である)場合にのみTrueになります。
  3. return even_numbers 奇数が削除された新しいリスト even_numbers を返します。
  4. 具体例として、入力リスト input_list に [1, 2, 3, 4, 5, 6, 7, 8, 9] を与えて、remove_odds 関数を呼び出します。その結果を output_list に格納します。
  5. 最後に、print() 関数を使って、入力リストと奇数を削除したリストを出力します。これにより、プログラムが正しく機能していることが確認できます。

このプログラムの主なポイントは、リスト内包表記を使って簡潔にリストから奇数を削除し、新しいリストを作成することです。

Google Colaboratory

解答例や解説のコードは Google Colaboratory で確認しています。(ChatGPT が解答してくれたコードも確認しています。)

環境構築の不要な Google が提供している Webサービスなので、Python を学習中の方にはオススメです。

おわりに

今回の問題は LINE のオープンチャットに投稿された、おそらくどこかの学校の課題です。
今後も具体的な問題・課題の解説記事を増やしていきたいと思っています。

解説して欲しい課題がありましたら、お問い合わせフォームからご連絡ください。

以上です。

スポンサーリンク

Python問題集No.1

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次