Python:嵌套循环没有按我希望的方式运行
Python: nested loops not behaving how I want them to
我需要编写一个程序来计算用户支付的费用。我坚持的部分是我必须询问用户一周中每天工作的小时数(根据他们指定的周数重复)。这是我目前所拥有的:
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
抱歉代码墙(其中一些可能与我的问题无关)。所以基本上这会在第一周很好地遍历列表,但随后日期名称将替换为输入的数字。另外,我不确定如何存储输入的这些变量,以便之后计算工资。对不起,如果这要求太多,完全卡住了。谢谢!
你可以使用字典,关联日期和小时数:
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
然后,您可以操纵日期和相关的工作量:
from collections import defaultdict
payperday = defaultdict(lambda: 10, {'Sunday': 20})
print(sum(payperday[day] * hours[day] for day in daysofweek))
添加周可以通过在字典键中添加一个整数和一个循环来完成:
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
然后您可以询问特定一周和一天的工作小时数:
hours[2, 'Sunday']
请注意,更多 idiomatic code 足以获得更简单的代码:使用 for day in daysofweek
而不是 C 风格 for i in range(len(daysofweek))
,或使用字典来关联数据,例如实例。
我需要编写一个程序来计算用户支付的费用。我坚持的部分是我必须询问用户一周中每天工作的小时数(根据他们指定的周数重复)。这是我目前所拥有的:
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
抱歉代码墙(其中一些可能与我的问题无关)。所以基本上这会在第一周很好地遍历列表,但随后日期名称将替换为输入的数字。另外,我不确定如何存储输入的这些变量,以便之后计算工资。对不起,如果这要求太多,完全卡住了。谢谢!
你可以使用字典,关联日期和小时数:
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
然后,您可以操纵日期和相关的工作量:
from collections import defaultdict
payperday = defaultdict(lambda: 10, {'Sunday': 20})
print(sum(payperday[day] * hours[day] for day in daysofweek))
添加周可以通过在字典键中添加一个整数和一个循环来完成:
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
然后您可以询问特定一周和一天的工作小时数:
hours[2, 'Sunday']
请注意,更多 idiomatic code 足以获得更简单的代码:使用 for day in daysofweek
而不是 C 风格 for i in range(len(daysofweek))
,或使用字典来关联数据,例如实例。