Когда пользователь вводит один и тот же ввод дважды (как ожидается), как мне объединить ввод с выводом? - PullRequest
0 голосов
/ 05 октября 2019

Мой тестовый код работает для первой записи с одним введенным днем, но тело кода не работает. Код продолжает работать с запросом дня и отработанных часов. Я ввожу «готово», и он тоже не принимает это.

Сначала я подумал о создании списка для введенных дней, но не был уверен, когда получить доступ к списку, чтобы распечатать нижний колонтитул, прежде чем перейти к следующему вводу. ,Там нет ошибок, просто не будет выполняться, как ожидалось. Это задание, и многие объявления уже были заполнены.

Ожидаемые результаты при вводе пользователем:

Работал день: Работал во вторник: работал 3 дня: Работал во вторник: работал 4 дня Всего 7

Вот мой код.

HEAD1 = "WEEKLY HOURS WORKED"
DAY_FOOTER = "Day Total "
SENTINEL = "done"   # Named constant for sentinel value
hoursWorked = 0     # Current record hours
hoursTotal = 0      # Hours total for a day
prevDay = ""        # Previous day of week
notDone = True      # loop control
days=[]



# Print two blank lines.
print("\n\n")
# Print heading.
print("\t" + HEAD1)
# Print two blank lines.
print("\n\n")

# Read first record 
dayOfWeek = input("Enter day of week or done to quit: ")
if dayOfWeek  == SENTINEL:
    notDone = False

else:
    hoursWorked =int(input("Enter hours worked: "))
    prevDay = dayOfWeek
    hoursTotal = hoursWorked
    days.append(dayOfWeek)
    print("\t" + DAY_FOOTER + str(hoursTotal))
    print(days)

while notDone == True:
    dayOfWeek = input("Enter day of week or done to quit: ")
    prevDay = dayOfWeek
    hoursWorked =int(input("Enter hours worked: "))
    hoursTotal = 0
    hoursTotal = hoursTotal + hoursWorked
    days.append(dayOfWeek)
    print(days)

    def dayChange(DAY_FOOTER,hoursWorked):
        if dayOfWeek == dayOfWeek:
            DAY_FOOTER = dayOfWeek
            hoursTotal = (hoursWorked + hoursWorked)
            print("\t" + DAY_FOOTER + str(hoursTotal))
            days.append(dayOfWeek)


        else:
            print("\t" + DAY_FOOTER + str(hoursTotal))

def endOfProgram(done):
    if dayOfWeek == "done":
        notDone == False
        return```






1 Ответ

0 голосов
/ 05 октября 2019

Есть несколько проблем с кодом:

Прежде всего, вы не очень чувствительны к команде "done" в цикле while. Вы проверяете переменную notDone, но никогда не пишете в эту переменную внутри цикла. Тест должен быть встроен в сам цикл и вне его. Во-вторых, с каждой итерацией цикла while вы инициализируете переменную hoursTotal равной 0, чтобы не запоминать значения предыдущих дней. Возможно, вам следует использовать дополнительный список для отслеживания часов или использовать словарь day_of_the_week: hours.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...