如果输入间隔在另一个间隔内,请附加到列表

2024-05-13 22:46:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个程序,根据用户输入的日期和时间,通知用户哪些动物将在参观动物园时醒来并喂食。 我有一个类,一个函数,它读取一个文件的信息,包括名字,醒着的时间,他们什么时候被喂,还有一些其他的东西,所有这些都可以工作

 class Animal:
      def __init__(self, name, sleep, diet, awake, feed, number):
           self.name = name
           self.sleep = sleep
           self.diet = diet
           self.awake = awake
           self.feed = feed
           self.number = number
      def __repr__(self):
           return self.name + " " + self.sleep + " " + self.diet + " " + str(self.awake) + " " + str(self.feed) + " " + str(self.number)

 def readInfo():
      infile = open("zoo.txt", "r", encoding="UTF-8")
      animals = []
      lines = infile.readlines()
      infile.close
      for line in lines:
           lineparts = line.split(" / ")
           name = lineparts[0]
           sleep = lineparts[1]
           diet = lineparts[2]
           awake = lineparts[3]
           feed = lineparts[4]
           number = lineparts[5]
           animals.append(Animal(name, sleep, diet, awake, feed, number))
      return animals

 def Awake(x):
      awakeanimals = x
      print("\nYou can see ")
      for object in awakeanimals:
           print(object)

 def Feed(x):
      matadjur = x
      print("\nand you can feed: ")
      for object in feedanimals:
           print(object)

以下是我的代码:

def open():
     animals = readInfo()
     awake = list()
     feed = list()
     time = int(input("Enter a time interval, eg 07-16")).split("-")

     if 9 <= time <= 20:
          awakeanimals.append(animals[0].name)
     if 12 <= time <= 14:
          awakeanimals.append(animals[1].name)
     if 21 >= time >= 05:
          awakeanimals.append(animals[2].name)
     #same for the rest of the animals

     if time <= 12 <= time:
          feedanimals.append(animals[0].name)
     if time <= 13 <= time:
          feedanimals.append(animals[0].name)
     #same for the rest of the animals

Awake(awakeanimals)
Feed(feedanimals)

之后,我有一个简单的菜单,根据用户输入的日期,调用函数open(),然后进入时间部分

我不知道如何在if条件下获得正确的输入

另外,由于ValueError: invalid literal for int() with base 10time = input().split("-")不起作用,所以我考虑使用两个时间输入time1 = input()time2 = input()。然而,在if条件中,这似乎更复杂


Tags: nameselfnumberforiftimedeffeed
1条回答
网友
1楼 · 发布于 2024-05-13 22:46:46

我不太清楚你想要什么逻辑。假设它是一个范围之间的检查,下面是

split("-")失败,因为您正在intger值上调用它split只能应用于字符串。当07-16不是有效数字时,会出现base 10错误

这是一段经过编辑的代码

def open():
    animals = readInfo()
    awake = list()
    feed = list()

    start_time, end_time = sorted(map(int, input("Enter a time interval, eg 07-16").split("-")))
    # time will be a tuple like (7, 16). We are sorting so that min value is first always


    if 9 <= start_time and end_time <= 20:
        awakeanimals.append(animals[0].name)
    if 12 <= start_time and end_time <= 14:
        awakeanimals.append(animals[1].name)
    if 21 >= start_time and end_time >= 05:
        awakeanimals.append(animals[2].name)
    # same for the rest of the animals

    if start_time <= 12 <= end_time:
        feedanimals.append(animals[0].name)
    if start_time <= 13 <= end_time:
        feedanimals.append(animals[0].name)
    # same for the rest of the animals

这将主要用于输入问题和比较

相关问题 更多 >