Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで完全平方数かつ桁の合計が10未満の数を範囲内から検索する方法

指定した範囲の中から、「完全平方数(ある整数の2乗になっている数)」であり、かつ「各桁の数字の合計が10未満」である数値をすべて検索したい場合、Pythonではリスト内包表記を使うことで簡潔に実装できます。

本記事では、その具体的なコード例と動作の仕組みをわかりやすく解説します。

サンプルコード

lower_limit = int(input("下限を入力してください: "))
upper_limit = int(input("上限を入力してください: "))
my_list = []
my_list = [x for x in range(lower_limit, upper_limit + 1) if (int(x**0.5))**2 == x and
sum(list(map(int, str(x)))) < 10]
print("結果は次の通りです: ")
print(my_list)

実行結果

下限を入力してください: 5
上限を入力してください: 12
結果は次の通りです:
[9]

この例では、5〜12の範囲内で条件を満たすのは 9 のみです。9は3の2乗という完全平方数であり、桁の合計も9(10未満)であるためです。

コードの解説

  • 範囲の入力: ユーザーから検索対象となる下限と上限を入力として受け取ります。

  • 空のリスト定義: 結果を格納するための空のリストを用意します。

  • リスト内包表記による反復処理: range(lower_limit, upper_limit + 1) を使って、下限から上限までのすべての整数を順に走査します。

  • 完全平方数の判定: (int(x**0.5))**2 == x により、xの平方根を整数化して再び2乗し、元の値と一致するかどうかを確認します。一致すれば完全平方数です。

  • 桁の合計の計算: str(x) で数値を文字列に変換し、map(int, ...) で各桁を整数に戻してから sum() で合計します。

  • 条件の絞り込み: 桁の合計が10未満である場合のみ、リストに要素を追加します。

  • 結果の出力: 条件を満たした数値のリストをコンソールに表示します。

ポイントまとめ

このプログラムの核となるのは、以下の2つの条件を1つのリスト内包表記に組み合わせている点です。

  • 平方根の切り捨て値を2乗して元の数と一致する → 完全平方数
  • map(int, str(x)) による各桁の合計が10未満

リスト内包表記を活用することで、forループやif文を何行にも分けて書く必要がなく、処理内容を1行で簡潔かつ読みやすく表現できるのが大きなメリットです。

  1. Pythonでリスト内の最小値を見つける方法を解説

    この記事では、リストの中から最小の数値を見つける方法について、具体的なサンプルコードとともに詳しく解説します。問題の概要問題: 数値のリストが与えられたとき、その中に含まれる最も小さい数値を画面に表示すること。この問題を解くアプローチは主に2つあります。ひとつは sort() メソッドを使ってリストを昇順に並べ替え、先頭の要素(インデックス0)を取得する方法。もうひとつは、Pythonに標準で用意されている組み込み関数 min() を使う方法です。それぞれ順番に見ていきましょう。方法1:sort()メソッドで並べ替えて最小値を取得するまずはリストを昇順にソートし、先頭の要素を取り出す方法です。

  2. Pythonでリスト内の最大値を見つける方法をわかりやすく解説

    この記事では、Pythonを使ってリストの中から最大の要素(最大値)を見つける方法について解説します。初心者の方でも理解しやすいよう、複数のアプローチをコード例とともに紹介していきます。 問題の概要 問題文: 与えられたリストの中から、最も大きい要素を求めて出力してください。 Pythonには便利な組み込み関数が用意されているため、これらを活用することで短いコードで効率的に問題を解決できます。ここでは主に sort() メソッドと max() 関数の2つの方法を取り上げます。 方法1:sort() 関数を使う sort() メソッドはリストを昇順に並べ替えます。並べ替え後のリストの末尾(インデ