0

私は、次のことを行う python 演習を見直しています。

  • 「完了」が入力されるまで番号のリストを読み取ります。

  • 「完了」が入力されたら、数字の最大値と最小値を出力します

  • また、組み込み関数 max() および min()を直接使用する必要はありません。

これが私の情報源です。トレースバックによると、「'float' オブジェクトは反復可能ではありません」

私のエラーは、リストを適切に使用して最小値と最大値を計算していないことが原因だと思います。ヒントやヘルプをいただければ幸いです。

while True:
    inp = raw_input('Enter a number: ')
    if inp == 'done' : 
        break

    try:
        num = float(inp)
    except:
        print 'Invalid input'
        continue                            

numbers = list(num)
minimum = None       
maximum = None

for num in numbers :                          
    if minimum == None or num < minimum :
        minimum = num

for num in numbers :        
    if maximum == None or maximum < num :
        maximum = num

print 'Maximum:', maximum
print 'Minimum:', minimum

ありがとうございました!

4

4 に答える 4

4

リストは必要ありません。あなたが行くようにあなたは現在の最小と最大を追跡する必要があるだけであるはずです。

minimum = None
maximum = None

while True:
    inp = raw_input('Enter a number: ')
    if inp == 'done': 
        break

    try:
        num = float(inp)
    except:
        print 'Invalid input'
        continue                            

    if minimum is None or num < minimum:
        minimum = num

    if maximum is None or num > maximum:
        maximum = num

print 'Maximum:', maximum
print 'Minimum:', minimum
于 2010-10-14T22:39:54.223 に答える
3

単一の番号を割り当てるだけでnum = float(inp)、新しい番号が割り当てられるたびに上書きされます。最初にリストを作成してから、毎回番号を追加する必要があります。このようなもの:

nums = []
while True:
  ...
  nums.append(float(inp))
于 2010-10-14T22:24:18.410 に答える
0
input_set = []
input_num = 0

while (input_num >= 0):

    input_num = int(input("Please enter a number or -1 to finish"))
    if (input_num < 0):
        break
    input_set.append(input_num)

print(input_set)

largest = input_set[0]
for i in range(len(input_set)):

    if input_set[i] > largest:
        greatest = input_set[i]

print("Largest number is", greatest)



smallest = input_set[0]
for i in range(len(input_set)):

    if input_set[i] < largest:
        smallest = input_set[i]

print("Smallest number is", smallest)
于 2016-05-08T05:32:59.700 に答える