【Py】《笨办法学Python》习题13--报错ValueError: not enough values to unpack (expected 4, got 1)

在PyCharm上运行《笨办法学Python》的代码时遇到ValueError,错误提示期望4个值但只得到1个。问题源于尝试将命令行参数赋值给四个变量。解决方案包括在PyCharm配置中添加参数或者直接在命令行运行,如:python ex13.py first second third。目前进度:已完成习题1到12,计划继续至15。

在pycharm上运行从书中copy的代码报错:ValueError: not enough values to unpack (expected 4, got 1),我理解是

“script, first , second , third = argv”这句话原本应该给四个变量赋值,但是最后只成功一个。(本质原因应该还是没在命令行运行,因为本书作者开始就说了不希望用idle,希望我们用命令行)

 

网上查了很多,感谢各路大神,汇总如下

_____________

【解决方案一】

pycharm中,在Edit Configurations那里,在Parameters后面输入需要被识别的变量即可,此处就是原文中的“first secone third”,运行

 

【解决方案二】

直接使用命令行运行 ,格式:python + “文件名” + “变量”。如下:

python ex13.py first second third

 

 

 

 

————————————

今日进度:从习题1到12 刷的飞快,然后在13跌了个大跟头。

目测今天可以看完15再吸收一下。

在使用 `python-docx` 时,如果遇到 `ValueError: not enough values to unpack (expected 2, got 1)` 异常,通常是因为代码中尝试解包一个返回值数量与预期不符的函数或方法。例如,某个函数预期返回两个值,但实际上只返回了一个,导致解包失败。 在 `python-docx` 中,这种错误可能出现在与文档结构相关的操作中,尤其是涉及 `findContours()` 类似的逻辑时[^4]。虽然 `python-docx` 本身并不直接使用类似 `cv2.findContours()` 的函数,但如果在文档处理过程中与图像处理、表格解析等操作结合使用,可能会出现类似的解包错误。 ### 解决方法 1. **检查返回值数量** 确保调用的函数返回的值数量与解包目标一致。例如: ```python # 正确使用解包 contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) ``` 如果某个函数返回的值不足两个,而代码中尝试解包为两个变量,就会抛出该异常。可以通过查看函数文档或打印返回值来确认其实际返回数量。 2. **使用通配符 `_` 忽略不需要的返回值** 如果只需要其中一个返回值,可以使用 `_` 忽略另一个: ```python contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) ``` 3. **检查第三方库版本兼容性** 如果使用了与 `python-docx` 配合使用的其他库(如 `opencv-python` 或 `numpy`),请确保它们的版本兼容[^3]。可以通过以下命令升级: ```bash pip install --upgrade opencv-python numpy ``` 4. **避免与图像处理库混用时的逻辑错误** 如果 `python-docx` 被用于处理包含图像的文档,并结合了 OpenCV 或 PIL 等图像处理库,则需要特别注意图像读取和处理流程中的函数返回值一致性[^4]。 ### 示例代码 ```python import cv2 # 读取图像并转换为二值图像 image = cv2.imread('example.png') gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) _, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 正确解包 findContours 返回值 contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 绘制轮廓 cv2.drawContours(image, contours, -1, (0, 255, 0), 2) cv2.imshow('Contours', image) cv2.waitKey(0) ``` ### 常见原因总结 - 函数返回值数量与解包目标不匹配。 - 使用了不兼容版本的图像处理库。 - 在图像处理流程中未正确处理函数返回值。
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值