2016-04-07 9 views
0

私は、ユーザーの支払いを計算するプログラムを書く必要があります。私が立ち往生している部分は、ユーザーが毎週曜日に働いた時間を尋ねなければならない場所です(指定された週数に応じて繰り返されます)。これは私が今までに持っているものです:Python:ネストされたループは、私がそれらを望むように振舞いません

daysofweek = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] 

day = 0 
while day < weeks: #user specified variable above 0 
    for i in range(len(daysofweek)): 
    while True: 
     daysofweek[i] = input("Enter the number of hours for week 1 " + daysofweek[i] + ": ") 
     try: 
     hours = float(daysofweek[i]) 
     if hours < 0 or hours > 24: 
      print("Invalid: Enter a number between 0 and 24") 
      continue 
     break 
     except ValueError: 
     print("Invalid: Enter a number between 0 and 24") 
day = day + 1 

申し訳ありませんが、壁の中には(おそらく私の問題とは無関係です)。ですから、基本的には最初の1週間はリストを繰り返し処理しますが、1日の名前は入力された数字に置き換えられます。さらに、私はこれらの変数をどのように格納するのかよくわからないので、後で給料を計算することができます。申し訳ありませんが、これはあまりにも多くを求めている場合、ちょうど完全に立ち往生。ありがとう!あなたは、辞書を使っ日と時間の数を関連付けることができ

+0

"曜日名は入力された番号に置き換えられます" - はい、要素を再割り当てすると発生します。なぜ、入力された値とは何をしたいのですか? – TigerhawkT3

+0

ええ、私はなぜそれが起こっていたが、それをどのように変更するのか分からない。私はそれらを追加し、別の入力でそれらを掛ける必要があります。 – DanThistle

+0

ええ、それはあなたがPythonにするように言ったものです。 'daysofweek [i] = input( 'x')' **は 'daysofweek'の**値を置き換えます。あなたは何をやろうとしましたか? –

答えて

2

from collections import defaultdict 
payperday = defaultdict(lambda: 10, {'Sunday': 20}) 
print(sum(payperday[day] * hours[day] for day in daysofweek)) 

daysofweek = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] 
hours = {} 
for day in daysofweek: 
    hour = -1 
    while hour < 0 or hour > 24: 
     hour = input("Enter the number of hours for week 1 " + day + ": ") 
    hours[day] = hour 

その後、あなたは一日の仕事の関連する量を操作することができます週を追加するには、辞書キーの整数とループを追加します。

for week in range(nb_week): 
    for day in daysofweek: 
     hour = -1 
     while hour < 0 or hour > 24: 
      hour = input("Enter the number of hours for week " +str(week) + " " + day + ": ") 
     hours[week, day] = hour 

その後、あなたは時間の数を求めることができますが&日、特定の週のために働い:idiomatic codeいくつかのより多くをシンプルコードを取得するのに十分であることを

hours[2, 'Sunday'] 

注:for day in daysofweekの使用方法の代わりに、C-をスタイルfor i in range(len(daysofweek))、または例えばデータの関連付けのための辞書の使用。

+0

私は今これを持っています: 'daysofweek = ["月曜日 "、"水曜日 "、"木曜日 "、"金曜日 "、"土曜日 "、"日曜日 "]' 'hours = {}' ' ' '時間= -'時間< 0 or hour > 24: ' '時間=入力(「週1時間+時間+」を入力してください:「 」は、 「) '' 時間[日] = hour' '日=日+ 1 ' しかし、それはあなたが' week'をインクリメントする必要が – DanThistle

+0

無限にかかわらず 'week'値の曜日を通過します。また、「曜日<週」は非感覚であるようです。 – aluriak

関連する問題