whileループがあります:
def setWorkDays(dayNameList):
workDays = []
while self.count > 0: #continue loop until all 5 work days have been filled or the loop breaks at the end
for day in dayNameList: #iterate over days, adding days to work days if they are not free days, AL days, preferred days, or free Saturdays
if day in self.freeDays or day in self.alDays or (day == 'Saturday' and self.satOff is True):
continue
elif day in self.programDays:
workDays.append(day)
self.count -= 1
elif self.preferredDay is not None and day in self.preferredDay:
continue
else:
workDays.append(day)
self.count -= 1
if self.preferredDay not in self.workDays: #if iteration completes, 5 work days have not been filled, and the preferred day has not been added, add the preferred day
workDays.append(self.preferredDay)
self.count -=1
return workDays
ループの背後にある考え方は、self.countが0に達すると、ループが終了するというものです。これは、self.countが変更される唯一の関数です。それでも、プログラムがself.countに対して-1を出力しているため、ループが少なくとも1カウント長すぎるように見えるという奇妙な結果が得られています。これが起こっているべきですか?whileループは、2番目のself.countがゼロに達するのを終了するべきではありませんか、それとも最初にforループを終了する必要がありますか?self.countがゼロであるかどうかをチェックし、ゼロである場合は中断するself.countが減少した後、条件付きロジックを追加する必要がありますか?それはwhileループの目的のようです...