ご指摘の通り、このコードは学習を始めたばかりの段階、あるいは「とりあえず動くロジックを確認したい」という状態のコードと言えます。
プロフェッショナルな視点、あるいは実用性を重視する視点で見ると、「入力値のバリデーション(妥当性確認)」が欠けている以外にも、いくつか技術的な改善点(ツッコミどころ)が見受けられます。
具体的にどのような点が「初心者」と感じさせるのか、ポイントを整理しました。
1. 入力チェック(例外処理)の欠如num = int(num) の部分で、ユーザーが全角数字、文字、あるいは空欄を入力すると、プログラムは即座にエラー(ValueError)を吐いて強制終了してしまいます。
* 改善策: try...except 文で囲むか、str.isdigit() などで数値かどうかを確認するのが一般的です。
2. 最大値・最小値のロジックの誤り
ここが実は一番大きなポイントなのですが、このコードは計算ロジック自体が成立していません。
* 比較演算子の誤用:** MAX = MAX \u0026gt; num という書き方は、Pythonでは「MAXがnumより大きいか?」という真偽値(True/False)をMAXに代入してしまいます。数値を保持し続けることができません。
* 初期値の問題: MIN = 0 と初期化しているため、正の数(1, 5, 10など)をいくら入力しても、0より小さくなることはなく、最小値が正しく判定されません。
* 出力のタイミング: while ループの外で if 文を使っていますが、これでは「最後に入力された1つの数値」としか比較できず、5つの数値全体から最大・最小を探すことができません。
3. 変数名の使い分けanswer1 や answer2 という変数が宣言されていますが、活用されていません。また、Pythonの慣習(PEP 8)では、定数以外に変数をすべて大文字(MAX)で書くことは珍しいです。
---
プロっぽく修正するならこうなる(例)
もし初心者を脱却して、堅牢なコードにするなら以下のような構成になります。python
import sys
nums = []
print(\u0026quot;5つの数値を入力してください。\u0026quot;)
while len(nums) \u0026lt; 5:
try:
val = input(f\u0026quot;{len(nums) + 1}番目: \u0026quot;)
num = int(val)
nums.append(num)
except ValueError:
print(\u0026quot;エラー: 数値を入力してください。\u0026quot;)
if nums:
print(f\u0026quot;最大値は {max(nums)} です。\u0026quot;)
print(f\u0026quot;最小値は {min(nums)} です。\u0026quot;)