2016-10-18 28 views
1

私はクラスのプロジェクトに問題があり、私はいくつかの助けを求めていました。繰り返し数値を求めてリストにminとmaxを出力するコードを作る必要があります。私の先生は、とにかく私たちが望むなら、これを行うことができると言った番号リストの最小値と最大値を見つける方法

num_list = [] 
    while True: 
    num = raw_input("Enter a number: ") 
    if num == "done" : break 
    if num >= 0: 
    num_list.append(num) 
    print min(num_list) 
    print max(num_list) 

これは私がこれまでのところ、それは数字の入力を要求していると私は行って入力したときに壊れるものですが、それはのみプリントアウトは、リスト内の最小値と最大値のために「完了」します。

+0

あなたのインデントを修正。ループの内外にあるものを知ることは不可能です。 –

答えて

1

min/maxを呼び出す前に数値を整数または浮動小数点型に変換する必要があります。

# under n >= 0: 
num = int(num) # or num = float(num) 
num_list.append(num) 

ので、動作するコードの例は次のようになります。

num_list = [] 
while True: 
    num = raw_input("Enter a number: ") 
    if num == "done" : 
     break 
    try: # use a try except to verify user input is in fact a number 
     num = int(num) + 0 # alternatively use float(num) if non integer numerical inputs will be used 
     if num >= 0: 
      num_list.append(num) 
      print "min: ",min(num_list) 
      print "max: ",max(num_list) 
    except: 
     print "invalid input" 

最大/最小すべての反復を呼び出していない:

num_list = [] 
_min, _max = None, None 
while True: 
    num = raw_input("Enter a number: ") 
    if num == "done" : 
     break 
    try: # use a try except to verify user input is in fact a number 
     num = int(num) # alternatively use float(num) if non integer numerical inputs will be used 
     if num >= 0: 
      if not _min or not _max: 
       _min,_max = num, num 
      elif num < _min: 
       _min = num 
      elif num > _max: 
       _max = num 

      num_list.append(num) 

    except: 
     print "invalid input" 

    print "min:", _min 
    print "max:", _max 
+0

なぜ0を追加して、minとmaxを連続して呼び出していますか? –

+0

私はnumが実際には数値であったことを検証して、フォームを削除しました。 min/max関数を繰り返し呼び出すのではなく、_min、_max参照を使用していれば、より効率的です。 – nick

+0

私は、ループが終了したときにminとmaxを出力する必要があるということをもっと意味していました –

関連する問題