You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python动物园动物状态查询程序输入处理与区间判断问题

动物园参观查询程序问题修复方案

问题1:时间输入ValueError报错修复

报错根本原因是代码执行顺序错误:输入的原始字符串包含-符号,无法直接转为整数,需要先分割字符串,再分别转整数。提供两种实现方案可选:

  • 方案1:保持原有的区间输入格式(示例07-16),代码如下:
# 输入处理部分
time_input = input("Enter a time interval, eg 07-16: ")
time_str_list = time_input.split("-")
# 转换为24小时制整数起止时间
user_start = int(time_str_list[0])
user_end = int(time_str_list[1])
# 兼容用户输入顺序颠倒的情况
if user_start > user_end:
    user_start, user_end = user_end, user_start
  • 方案2:拆分为两个独立输入,后续判断逻辑和方案1完全一致,输入部分代码如下:
user_start = int(input("输入参观开始时间(24小时制,示例:7): "))
user_end = int(input("输入参观结束时间(24小时制,示例:16): "))
if user_start > user_end:
    user_start, user_end = user_end, user_start

小提示:不要用open作为自定义函数名,Python内置了同名的文件操作函数,重名会覆盖内置方法导致后续文件操作报错,建议改为query_visit_animals这类自定义名称。

问题2:时间区间匹配判断逻辑

默认你已经将Animal类的awake、feed属性存储为对应时间的整数区间,比如某动物8点到18点清醒,则awake = [8, 18],两种常见匹配规则按需选择:

  • 规则1:只要参观区间和动物的时间区间有重叠就算符合要求(即参观期间有一段时间可看到清醒/可投喂动物),判断条件:
awake_list = []
feed_list = []
for animal in animal_list:
    # 判断是否符合清醒筛选条件
    if animal.awake[0] < user_end and animal.awake[1] > user_start:
        awake_list.append(animal)
    # 判断是否符合可投喂筛选条件
    if animal.feed[0] < user_end and animal.feed[1] > user_start:
        feed_list.append(animal)
  • 规则2:参观区间完全落在动物的时间区间内才算符合要求(即参观全程动物都清醒/可投喂),判断条件:
awake_list = []
feed_list = []
for animal in animal_list:
    # 判断是否符合清醒筛选条件
    if user_start >= animal.awake[0] and user_end <= animal.awake[1]:
        awake_list.append(animal)
    # 判断是否符合可投喂筛选条件
    if user_start >= animal.feed[0] and user_end <= animal.feed[1]:
        feed_list.append(animal)

内容的提问来源于stack exchange,提问作者Oreyin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:06:03