【问题标题】:How to change value in list for calendar?如何更改日历列表中的值?
【发布时间】:2017-12-08 21:35:37
【问题描述】:

我的函数的目标是在该日历中预订与参数日期和时间相对应的时段 - 通过将日历中的值更改为“X”来完成预订(表示预订了日期/时间)。这是我到目前为止的代码:

def find_index(val, seq):
    for index in range(len(seq)):
        place = seq[index]
        if place == val:
            return index
        else:
            return int("-1")

def init_nested_list(size_outer, size_inner):
    cal = []
    for outer_index in range(size_outer):
        nested_list = []
        for inner_index in range(size_inner):
            nested_list.append("-")
        cal.append(nested_list)
    return cal

def book_slot(cal,days_labels, times_labels, day, time):
    pos1 = find_index(day, days_labels)
    desired_day = cal[pos1]
    pos2 = find_index(time, times_labels)
    desired_time = desired_day[pos2]
    if desired_day == "X":
        print("We are sorry - that time is not available. Please try again.")
    else:
        print("Appointment is booked.")


days_labels = ["Wednesday","Thursday","Friday"]
times_labels = ["9","10","11"]
cal = init_nested_list(len(days_labels), len(times_labels))
print("before" , cal)
book_slot(cal, days_labels, times_labels, "Friday", "10")
print("after" , cal)

这是我得到的输出:

before [['-', '-', '-'], ['-', '-', '-'], ['-', '-', '-']]
Appointment is booked.
after [['-', '-', '-'], ['-', '-', '-'], ['-', '-', '-']]

这是我应该得到的输出:

before [['-', '-', '-'], ['-', '-', '-'], ['-', '-', '-']]
Appointment is booked.
after [['-', '-', '-'], ['-', '-', '-'], ['-', 'X', '-']]
We are sorry - that time is not available. Please try again.

如您所见,正确的输出记录了嵌套列表中的第二个元素(星期五 10 点),但对于我的代码,它不是。我知道desired_day 是用户想要预订的cal 日期,但我只是不确定如何正确获取它,并在用户预订时将其分配给字符串“X”。我也知道导致此问题的 book_slot 函数中存在编码错误,但我再次不确定它是什么...请帮助?

【问题讨论】:

    标签: python string list function calendar


    【解决方案1】:

    book_slot 中的任何地方都没有将X 分配给任何东西。我认为您可以使用pos1pos2 来识别要分配到的插槽。

    【讨论】:

      【解决方案2】:

      这会奏效。查看代码中的更改#注释

      def find_index(val, seq):
          return seq.index(val) #Change 1
      
      
      def init_nested_list(size_outer, size_inner):
          cal = []
          for outer_index in range(size_outer):
              nested_list = []
              for inner_index in range(size_inner):
                  nested_list.append("-")
              cal.append(nested_list)
          return cal
      
      
      def book_slot(cal, days_labels, times_labels, day, time):
          pos1 = find_index(day, days_labels)
          desired_day = cal[pos1]
          pos2 = find_index(time, times_labels)
          if desired_day[pos2] is "X": # Change 2
              print("We are sorry - that time is not available. Please try again.")
          else:
              print("Appointment is booked.")
              desired_day[pos2] = "X" # Change 3
      
      
      days_labels = ["Wednesday", "Thursday", "Friday"]
      times_labels = ["9", "10", "11"]
      cal = init_nested_list(len(days_labels), len(times_labels))
      print("before", cal)
      book_slot(cal, days_labels, times_labels, "Friday", "10")
      book_slot(cal, days_labels, times_labels, "Friday", "10") # Change 4: Need to do a booking twice to make it fail :-)
      print("after", cal)
      

      将输出:

      ('before', [['-', '-', '-'], ['-', '-', '-'], ['-', '-', '-']])
      Appointment is booked.
      ('after', [['-', '-', '-'], ['-', '-', '-'], ['-', 'X', '-']])
      We are sorry - that time is not available. Please try again.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-28
        • 1970-01-01
        • 2020-06-07
        相关资源
        最近更新 更多