我从学习Python艰难的方式做ex13
我试图通过:
python ex13.py raw_input() raw_input() raw_input()
我的代码如下:
from sys import argv
script, first, second, third = argv
print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third
我不断得到的错误是:
Traceback (most recent call last):
File "ex13.py", line 5, in <module>
script, first, second, third = argv
ValueError: too many values to unpack
我想知道为什么我会收到此错误以及如何解决此错误
答案 0 :(得分:8)
我现在正在经历LPTHW并且刚刚接受了这个练习。我认为作者的意思是他希望你在同一个剧本中同时使用argv
和raw_input()
。他并不是指你将它们本身组合在同一个论点或行或其他任何东西中。事实上,他提到的“普通学生问题”之一只涉及这个问题。他说
不要过度思考它。只需在此脚本末尾打两行,使用
raw_input()
获取内容然后将其打印出来。从那开始玩更多的方法在同一个脚本中使用它们。
尽管已经晚了2个月,但希望它有所帮助。
这就是我修改脚本以完成有问题的“Study Drill”的方法:
from sys import argv
script, first, second, third = argv
fourth = raw_input("What is your fourth variable? ")
print "All together, your script is called %r, your first variable is %r, your second is %r, your third is %r, and your fourth is %r" % (script, first, second, third, fourth)
答案 1 :(得分:7)
您不能“raw_input()
使用argv
”。 argv
提供了在运行程序之前指定的数据。 raw_input()
是 Python函数,即您的程序可以执行的操作。 命令行 - 您键入python
命令以运行程序 - 是程序本身的完全独立的事物。
答案 2 :(得分:2)
如果您正在尝试从“学习Python艰难之路”中完成练习13练习练习,那么您将尝试组合argv和raw_input()。作者建议您使用raw_input()从用户那里获得更多输入。
在这个帖子的帮助下,我提出了这个:
from sys import argv
ScriptName, first, second, third = argv
print "What is your fourth variable?"
fourth = raw_input()
print "What is your fifth variable?"
fifth = raw_input()
print "What is your sixth variable?"
sixth = raw_input()
print "The script is called: ", ScriptName
print "Your first variable is: ", first
print "Your second variable is: ", second
print "Your third variable is: ", third
print "Your fourth variable is: ", fourth
print "Your fifth variable is: ", fifth
print "Your sixth variable is: ", sixth
print "For your script %r, these are the variables: %r, %r, %r, %r, %r,
and %r." % (ScriptName, first, second, third, fourth, fifth, sixth)
这似乎是作者的建议吗?
答案 3 :(得分:0)
我认为这就是作者的意思(使用argv&amp;使用它输入int raw_input()): -
from sys import argv
script, first, second, third, take_input = argv
print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third
raw_input(take_input + "? ")
答案 4 :(得分:0)
由于作者在学习练习中明确指出:“将raw_input
与argv
结合起来制作一个从用户那里获得更多输入的脚本。”,您可以使用添加另一行询问第四个输入。
fourth = raw_input("Enter the fourth value: ")
print "Your fourth variable is: ", fourth
或者查看你的代码,我认为你过度认为它是“制作一个从用户那里得到输入的脚本”,这样做
from sys import argv
script, first, second, third = argv, raw_input("Enter first value: "), raw_input("Enter second value: "), raw_input("Enter third value: ")
print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third
这样,您无需向python ex13.py
提供数据即可运行脚本。再次,这不是研究演习所要求你做的,但我希望它可能有所帮助。
答案 5 :(得分:0)
是的,你可以这样做,但这有点棘手,作者在之前的练习中没有提到它。
argv实际上是一个列表[](或数据数组),因此您可以在脚本中处理其各个元素。
以下是我的例子:
from sys import argv
script, first, second, third = argv # one way to unpack the arguments
script_new = argv[0] # another way
first_new = argv[1]
second_new = argv[2]
third_new = argv[3]
print "original unpacking: ", script, first, second, third
print "argv[] unpacking: ",script_new, first_new, second_new, third_new
argv[0] = raw_input("argument 0? ")
argv[1] = raw_input("argument 1? ")
argv[2] = raw_input("argument 2? ")
argv[3] = raw_input("argument 3? ")
print argv[0], argv[1], argv[2], argv[3]
答案 6 :(得分:0)
我现在正在学习这个,我想他只是想让你思考并尝试更多。 这是我的代码:
body#943 .ish-button-small {display:none;}
答案 7 :(得分:-1)
作者的想法应该是这样的 如果你在ipython笔记本中
% run ex13.py 1st 2nd 3rd
如果你在命令行
python ex13.py 1st 2nd 3rd