2

私はPythonが初めてで、クラスのプログラムを作成するのに苦労しています。降雪量を 1 週間毎日記録し、入力を小数点以下 1 桁に四捨五入することになっています。これを以下で行いました。

def main():
    print "~*~*~*~*~*~  SNOWFALL LOG ~*~*~*~*~*~"

    snowFall = float (raw_input("Enter Snowfall for Day 1: "))
    print "Snowfall for Day 1: ", ("%.1f" % snowFall)
    snowFall = float (raw_input("Enter Snowfall for Day 2: "))
    print "Snowfall for Day 2: ", ("%.1f" % snowFall)
    snowFall = float (raw_input("Enter Snowfall for Day 3: "))
    print "Snowfall for Day 3: ", ("%.1f" % snowFall)
    snowFall = float (raw_input("Enter Snowfall for Day 4: "))
    print "Snowfall for Day 4: ", ("%.1f" % snowFall)
    snowFall = float (raw_input("Enter Snowfall for Day 5: "))
    print "Snowfall for Day 5: ", ("%.1f" % snowFall)
    snowFall = float (raw_input("Enter Snowfall for Day 6: "))
    print "Snowfall for Day 6: ", ("%.1f" % snowFall)
    snowFall = float (raw_input("Enter Snowfall for Day 7: "))
    print "Snowfall for Day 7: ", ("%.1f" % snowFall)

main()

ただし、その後、forループを使用して総降雪量と平均を計算することになっています。コマンドstr(command)も何らかの形で関与していることは知っていますが、その方法はわかりません。

この問題にどのようにアプローチすればよいですか?

4

4 に答える 4

2

値をリストに入れて保存することをお勧めします。したがって、印刷する前にこれを入れます:

snowFallTotal = []

これで、このリストに値を入れることができます。これを置くたびraw_inputに:

snowFallTotal.append(snowFall)

これが行うことは、リストに「追加」snowFallすることです。

すべての値を取得したら、ループを使用して合計を計算し、forそれを で割って7平均を取得できます。

totalSum = 0  # variable to store the sum
for i in snowFallTotal:  # iterate through the value list
    totalSum += i  # augmented addition; adds the value to the variable in place
average = totalSum / 7.0  # floating point division to get accurate average

その後、結果を印刷できます。

print 'Average Snowfall for the week:', ('%.1f' % average)

for補足として、ループは必要ありません。単純な関数に置き換えることができsumます。

totalSum = sum(snowFallTotal)

これにより、totalSum が の要素の合計に割り当てられます。これは、ループが行ったsnowFallTotalこととまったく同じです。for

于 2013-02-01T07:39:03.333 に答える
2

ループを使用すると、数行のコードを節約できます。

# An empty list to hold data
snowfalls = []

# Loop through each daynumber, from 1 to 7
for daynumber in range(1,8):
    snowfall = float(raw_input("Enter Snowfall for Day {}: ".format(daynumber)))
    snowfalls.append(snowfall)
    print "Snowfall for Day {}: {:.1f}".format(daynumber, snowFall)

# For debugging, print the whole list
print snowfalls

# Calculate total
total_snowfall = sum(snowfalls)
print "Total snowfall: {:.1f}".format(total_snowfall)

# Calculate average (= total / 7.0 ) 
# len() gets the length of the snowfall list
average_snowfall = total_snowfall / len (snowfalls)
print "Average snowfall: {:.1f}".format(average_snowfall)

これformat()は、文字列の書式設定を行う新しい方法です-かなり気の利いたものです:)

于 2013-02-01T08:50:49.217 に答える
0

課題の仕様書とクラスノートをよく読むことをお勧めします。生徒がタスクを完了するのに十分な資料がないまま課題が与えられることはめったにありません。

などの特定の機能に役立つ公式ドキュメントなど、Python に関連するオンライン リソースが多数ありますstr()

先生に直接アクセスできる場合は、先生にたくさん質問してください。これらは、プログラミング タスクへのアプローチ方法に関する基本的な問題を解決するのに役立ちます。

于 2013-02-01T08:44:02.563 に答える
-1

私はそれを行う関数を書くことができましたが、あなたはこれを始めたばかりだと思います...だから多分これが役に立ちます。これは DRY ではありません (プログラミングの良いルールは自分自身を繰り返さないことです) が、この方法は理解を深めるのに役立つかもしれません!

total_snowfall=0.0

snowFall = float (raw_input("Enter Snowfall for Day 1: "))
total_snowfall +=snowFall 
print "Snowfall for Day 1: ", ("%.1f" % snowFall)

snowFall = float (raw_input("Enter Snowfall for Day 2: "))
total_snowfall +=snowFall 
print "Snowfall for Day 2: ", ("%.1f" % snowFall)

snowFall = float (raw_input("Enter Snowfall for Day 3: "))
total_snowfall +=snowFall 
print "Snowfall for Day 3: ", ("%.1f" % snowFall)

snowFall = float (raw_input("Enter Snowfall for Day 4: "))
total_snowfall +=snowFall 
print "Snowfall for Day 4: ", ("%.1f" % snowFall)

snowFall = float (raw_input("Enter Snowfall for Day 5: "))
total_snowfall +=snowFall 
print "Snowfall for Day 5: ", ("%.1f" % snowFall)

snowFall = float (raw_input("Enter Snowfall for Day 6: "))
total_snowfall +=snowFall 
print "Snowfall for Day 6: ", ("%.1f" % snowFall)

snowFall = float (raw_input("Enter Snowfall for Day 7: "))
total_snowfall +=snowFall 
print "Snowfall for Day 7: ", ("%.1f" % snowFall)

print "total snowfall is:" ,("%.1f" % total_snowfall) #you can do some calculations here
于 2013-02-01T07:48:09.783 に答える