2017-09-27 10 views
1

最初の行にはケースの数が表示されます。その後に続く行はケースになります。その場合は、最大数、最小数、および範囲を出力できる必要があります。 これまでのところ、このコードはありますが、最初の2つのケースだけを考慮しており、ケースの数を示す最初の行は完全に無視されています。誰かが私に何が間違っているか教えてもらえますか?ありがとう!pythonで複数の行のユーザー入力から最大値と最小値をどのように出力しますか?

cases = int(input()) 
index = 1 
inp = int(input()) 
minimum = inp 
maximum = inp 
while index<=cases: 
    inp = int(input()) 
    if input>maximum: 
    maximum = inp 
    elif input<minimum: 
    minimum = inp 
    index = index + 1 
    print('Maximum: '+str(maximum)) 
    print('Minimum: '+str(minimum)) 
    print('Range: '+str(maximum-minimum)) 

答えて

0

これは典型的なオフバイエラーです。それらのための一般的な解決策は、1または3のようないくつかの小さな数字であなたのアルゴリズムを試し、彼らがあなたの期待に合っているかどうかをチェックすることです。

のでcasesを1に初期化されるwhile条件index<=cases1<=1に評価され、あなたがすでに行に3

をケースを登録したが、それは、ループ1つのより多くの時間を入力する、のは、第一入力が1であるとしましょうループの状態をindex<casesに置き換えても問題ありません。また、すべての入力が読み込まれた後に一度だけ書き込みを行うには、printコールのインデントを解除する必要があります。

また、コードを見るだけでは解決できないほど困難な問題に直面した場合、デバッガを使用してプログラムの実際のフローと変数の値が期待通りに一致するかどうかを確認することをお勧めします。 PyCharmは、Pythonコードをデバッグするための非常に強固なIDEです。

0

これは、あなたの質問を解決するのに役立ちます:

cases = int(input()) 
arr = [int(input()) for i in range(cases)] 
min_e, max_e = min(arr), max(arr) 
print("Min:{} Max:{} Range:{}".format(min_e, max_e, max_e-min_e)) 
+0

Pythonはそのような簡潔なソリューションを許可していますが、新人開発者はより詳細を読み書きすることが簡単ですが、OPのような低レベルのコードがしました。あるいは、私は教訓について考えるために間違ったサイトにいるのですか? ;) – wigy

+1

はい、より長いバージョンを書くことができます。しかし、標準的な関数を使用すると、アルゴリズムを勉強していない場合、時間を節約できます:) – AndMar

関連する問題