我的测试代码适用于输入一天的第一条记录,但代码主体不起作用。该代码继续运行,询问工作的日期和时间。我输入“完成”,它也不接受。
我最初想为输入的日期创建一个列表,但不确定在进入下一个输入之前何时访问该列表以打印页脚。没有错误只是不会按预期执行。这是一项任务,许多声明已经填充。
用户输入的预期结果:
工作日:星期二 工作时间: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```
最佳答案
代码有几个问题:
首先,您对 while 循环中的“done”命令并不是很敏感。您确实测试了 notDone
变量,但您从不在循环内写入该变量。测试应该嵌入循环本身,在循环之外是多余的。其次,在 while 循环的每次迭代中,您都将 hoursTotal
变量初始化为 0,这样您就不会记住前几天的值。也许您应该使用一个额外的列表来跟踪小时数,或者使用 day_of_the_week:hours 字典。
关于python - 当用户输入相同的输入两次(预期)时,如何将输入组合到输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58251236/