Python UI 教程:正确从哈希表中检索单个包裹对象并查询其状态

轻涛君_1428

轻涛君_1428

2026-07-22

208人浏览

原创

Python UI 教程:正确从哈希表中检索单个包裹对象并查询其状态

本文详解如何在 Python UI 程序中通过用户输入的包裹 ID 正确访问哈希表(Hashtable)中的对应对象,避免 AttributeError: 'NoneType' object has no attribute 错误。核心在于确保 search() 方法接收整型键,并直接返回目标对象而非遍历字符串。

本文详解如何在 python ui 程序中通过用户输入的包裹 id 正确访问哈希表(hashtable)中的对应对象,避免 `attributeerror: 'nonetype' object has no attribute` 错误。核心在于确保 `search()` 方法接收整型键,并直接返回目标对象而非遍历字符串。

在实现物流包裹状态查询 UI 时,常见误区是将用户输入的包裹 ID 当作字符串直接用于哈希表查找——而你的哈希表(如 myHash)很可能以整数为键(例如 1, 14, 40),若传入字符串 '14',myHash.search('14') 将返回 None,后续访问 pack.timeLeftHub0 自然抛出 AttributeError。

问题代码中关键错误有两处:

  1. 错误地遍历字符串

    for package_id in checkPackage:  # ❌ checkPackage 是字符串,如 "14" → 循环得到 '1', '4'
        pack = myHash.search(package_id)  # 搜索的是字符 '1' 和 '4',非整数 14

    这导致 myHash.search('1') 和 myHash.search('4') 均失败(除非恰好存在 ID 为 1 或 4 的包裹),返回 None。

    Python数据分析(免费版)
    Python数据分析(免费版)

    提供Python数据清洗、统计分析与可视化建议,覆盖业务报表与科研数据的快速处理流程。

    下载
  2. 未将输入转换为整数
    input() 总是返回字符串,必须显式调用 int() 转换,才能匹配哈希表中以整数为键的设计。

✅ 正确做法是:直接对 input() 结果做 int() 转换,并作为参数传入 myHash.search(),一步获取目标包裹对象:

# ✅ Option 3 — 正确实现
elif option == "3":
    try:
        package_id = int(input('Please enter a package using its package ID: '))
        pack = myHash.search(package_id)
        if pack is None:
            print(f"Error: No package found with ID {package_id}")
        else:
            checkTime = input('Please enter a time in the form "HH:MM:SS": ')
            hour, minute, second = checkTime.split(":")
            rtime = datetime.timedelta(hours=int(hour), minutes=int(minute), seconds=int(second))

            # 状态逻辑(优化版:合并重复分支)
            if rtime <p>? <strong>关键注意事项</strong>:</p>
  • 始终对 input() 的数值型输入做 int() 或 float() 转换,并用 try-except 捕获 ValueError;
  • 在调用 myHash.search() 后,务必检查返回值是否为 None(尤其当用户输入不存在的 ID 时),避免后续属性访问崩溃;
  • 时间逻辑可进一步优化:rtime == pack.time_delivered 与 rtime > pack.time_delivered 可合并为 rtime >= pack.time_delivered,因“已送达”状态不随时间推移改变;
  • 不要对字符串 ID 进行循环(如 for c in "14"),这完全违背哈希表按键查值的设计初衷。

通过以上修正,你不仅能解决当前报错,还能构建更健壮、可维护的 UI 查询逻辑——让每一次用户输入都精准映射到哈希表中的真实对象。

Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

python

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1531

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

3564

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1549

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

20277

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2527

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

2587

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1063

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

576

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2003

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程