2016-08-27 21 views
0

私はPythonで新しく、オンラインチュートリアルを行っています。私は達成できない課題を持っています。私の問題は、このコードを実行すると、minimumの変数はNoneと同じままで、新しい値の入力が記録されないということです。Python ifとelifが動作しない、エラーが発生する

maximum = None 
minimum = None 
while True: 
    try: 
     num2 = raw_input('Type here ') 
     if num2 == 'done':break 
     else: 
      num = int(num2) 
      if num <= minimum: 
       minimum = num 
       print minimum 
      elif num >= maximum: 
       maximum = num 
       print maximum 


    except: 
     print 'Invalid Entry' 


print 'Maximum is %d' % maximum 
print 'Minimum is %d' % minimum 
+0

フォーマットを修正しました。 –

+1

[デバッグ](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を試しましたか?まず、いくつかの 'print'ステートメントを投げて、各変数の値がさまざまなポイントにあることを確認します。何が起こっているのか少し分かります。 – MattDMo

+2

さらに、Pythonを初めてお使いの方は、まず** Python 3の学習を強くお勧めします。 – MattDMo

答えて

0

あなたの問題は、あなたがNoneと数字を比較することはできません(some number) <= None場合は、あなたがチェックしているということです。代わりに、minimum=float("inf")maximum=float("-inf")は最小値を無限に、最大値を負の無限大に設定します。これにより、最初に入力した数値は無限より小さくなり、minimumに設定され、負の無限大より大きくなります(maximumに設定)。 elif maximum >= numif maximum >= num(最初に入力した番号を処理する)に変更する必要があることに注意してください。あなたがNoneintを比較している

+0

私は0と0を最小限にしようとしましたが、ユーザーはどのようにして0の小さいほうを小さくできますか?だから私はまだその問題を抱えている、私は何をしているのは、ユーザーからのエントリの最小と最大のものをキャッチすることです。 – PIMg021

+0

問題はありませんが、私はあなたのためのヒントを持っています:if/else文を書くたびに、変数のタイプをチェックしてください。あなたがリンゴとオレンジを比較するのと同じように、数字と「なし」を比較しようとしている場合、あなたは(リンゴやオレンジを持たない限り)できません。 –

+0

@ PIMg021すべてのユーザーが負の数... – MattDMo

0
import sys 
maximum = None 
minimum = sys.maxsize 
while True: 
    try: 
     num2 = raw_input('Type here ') 
     if num2 == 'done':break 
     else: 
      num = int(num2) 
      minimum = min(minimum, num) 
      maximum = max(maximum, num) 
    except: 
     print 'Invalid Entry' 


if maximum is None: 
    minimum = None 

print 'Maximum is %d' % maximum 
print 'Minimum is %d' % minimum 
0

、Pythonはそれを行う方法を知りません。 代わりに、あなたが行う必要があります。

maximum = float('-inf') 
minimum = float('inf') 

物事が正常に動作しますので、どれintが、-infinityより大きくinfinityよりも低くなります。同じことはゼロについては言えないので、それらを使わないでください。

また、minmaxbuiltinsを参照してください。

+0

以下に述べるように、Python 2 *は整数とfloatをNoneとエラーなしで比較します。やってみなよ。結果は必ずしも意味をなさないとは限りませんが、Python 3のようにエラーにはなりません。 – MattDMo

+0

これは混乱します。まあ、その行動に頼っているのは良い習慣ではないと思います。 – Daerdemandt

関連する問題