iOS Pythonista 3运行《笨办法学Python3》练习14报错求助
解决Pythonista 3中《笨办法学Python3》练习14的
ValueError问题 错误原因
你遇到的ValueError: not enough values to unpack (expected 2, got 1),是因为代码里试图把sys.argv拆成script和user_name两个变量,但在Pythonista中直接运行脚本时,argv只包含脚本文件名这一个元素,没有额外的命令行参数。常规桌面Python环境中,你可以通过python script.py 用户名的方式传递第二个参数,但Pythonista默认不会自动传入。
解决方案
方案1:修改代码用input获取用户名
适配Pythonista的运行逻辑,把依赖命令行参数的部分改成手动输入:
from sys import argv script = argv[0] user_name = input("请输入你的名字: ") prompt = '> ' print(f"Hi {user_name}, I'm the {script} script.") print("I'd like to ask you a few questions.") print(f"Do you like me {user_name}?") likes = input(prompt) print(f"Where do you live {user_name}?") lives = input(prompt) print("What kind of computer do you have?") computer = input(prompt) print(f""" Alright, so you said {likes} about liking me. You live in {lives}. Not sure where that is. And you have a {computer} computer. Nice. """)
方案2:在Pythonista中手动设置命令行参数
如果你想保留原代码逻辑,可以给脚本添加运行参数:
- 打开脚本后,点击右上角的扳手图标(运行设置)
- 在「Command Line Arguments」输入框中填写你的用户名(比如
小明) - 保存设置后重新运行脚本,
argv就会包含脚本名和你输入的用户名,代码即可正常执行
方案3:临时添加测试参数快速验证
如果只是想快速测试代码,可以临时给argv补充测试值:
from sys import argv # 当没有传入足够参数时,手动添加测试用户名 if len(argv) < 2: argv.append("测试用户") script, user_name = argv prompt = '> ' # 后续代码保持不变...
内容的提问来源于stack exchange,提问作者Zhāng JīngYè
相关产品推荐
相关产品推荐

