1

これは私の現在のコードです:

while True:
        try:
            mylist = [0] * 7
            for x in range(7):
                    sales = float(input("Sales for day:"))
                    mylist[x] = sales
                    if  sales < 0:
                        print ("Sorry,invalid. Try again.")
        except:
            print ("Sorry, invalid. Try again.")
        else:
            break

print (mylist)

best = max(sales)
worst = min(sales)

print ("Your best day had", best, "in sales.")
print ("Your worst day had", worst, "in sales.")

実行すると、次のようになります。

Sales for day:-5
Sorry,invalid. Try again.
Sales for day:-6
Sorry,invalid. Try again.
Sales for day:-7
Sorry,invalid. Try again.
Sales for day:-8
Sorry,invalid. Try again.
Sales for day:-9
Sorry,invalid. Try again.
Sales for day:-2
Sorry,invalid. Try again.
Sales for day:-5
Sorry,invalid. Try again.
[-5.0, -6.0, -7.0, -8.0, -9.0, -2.0, -5.0]
Traceback (most recent call last):
  File "C:/Users/Si Hong/Desktop/HuangSiHong_assign9_part.py", line 45, in <module>
    best = max(sales)
TypeError: 'float' object is not iterable

0 以上の値のみが必要なため、リストが負の値を取り込まないようにコーディングする方法がよくわかりません。

コードのように最小値と最大値が出力されるように TypeError の問題を解決する方法がわかりません

私の最後の問題は、ユーザーが入力した7つの入力の平均値を見つけたい場合、リストから値を引き出す際にどうすればよいかということです

どうもありがとう

4

3 に答える 3

3

最善の策は、データ チェックを while ループに入れることです。これは、条件が満たされるまでこの値をループし続けます ( >0)

また、これにより、ユーザーが結果を入力している日を把握するのが混乱する可能性があります。さらに、個々の値ではなく、最大/最小のリストを使用する必要があります。すべてをまとめて、次の変更を加えます。

        for x in range(7):
            sales=-1
            while (sales<0):
                sales = float(input("Sales for day {0}".format(x)))
                mylist[x] = sales
                if  sales < 0:
                    print ("Sorry,invalid. Try again.")

そして後でこの変更を行います:

best = max(my_list)
worst = min(my_list)
于 2012-12-09T23:03:16.487 に答える
3

言いたいことは:

best = max(my_list)
worst = min(my_list)

有効性チェックに関しては、入力が無効な場合でも の次の値に進むという問題がありますx

于 2012-12-09T23:03:42.227 に答える
-1

たぶん(未テスト):

mylist = []
while len(mylist) < 7:
    sales = float(input("Sales for day %s:" % str(len(mylist)+1)))
    if  sales >= 0:
        mylist.append(sales)
    else:
        print ("Sorry,invalid. Try again.")

print (mylist)

best = max(mylist)
worst = min(mylist)

print ("Your best day had", best, "in sales.")
print ("Your worst day had", worst, "in sales.")
于 2012-12-11T01:04:44.030 に答える