我正在撰寫一個程式,根據他們輸入的日期和時間,通知用戶在訪問動物園期間哪些動物將被喚醒和喂食。我有一個類,一個函式可以讀取一個檔案,其中包含名稱、醒著的時間、什么時候喂食,以及其他一些一切正常的東西。
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條件中獲得正確的輸入。
此外,由于time = input().split("-")不起作用ValueError: invalid literal for int() with base 10,所以我正在考慮使用兩個時間輸入time1 = input(), 和time2 = input()。但是,將其納入if條件似乎更為復雜。
uj5u.com熱心網友回復:
我不太確定你想要的 if 邏輯。假設它是一個范圍之間的檢查,這里有一些東西
將split("-")失敗,因為你是在intger值呼叫它。split只能應用于字串。并且出現基數為 10 的錯誤,因為07-16它不是有效數字。
這是一段經過編輯的代碼
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
這將主要用于輸入問題和比較。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/325807.html
