繁体   English   中英

如何将 raw_input 与 argv 一起使用?

[英]How to use raw_input with argv?

我正在学习 Python The Hard Way 中的 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

我想知道为什么我会收到这个错误以及如何解决它

我现在正在自己经历LPTHW并且刚刚接受了这个练习。 我认为作者的意思是他希望你在同一个脚本中同时使用argvraw_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)

你不能“使用带有argv raw_input() ”。 argv提供了在运行程序之前指定的数据。 raw_input()是一个Python函数 ,即程序可以执行的操作。 命令行 - 您键入python命令以运行程序 - 与程序本身完全不同

如果您正在尝试从学习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)

这似乎是作者的建议吗?

我认为这就是作者的意思(使用argv进行输入并使用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 + "? ")

由于作者在学习练习中明确指出:“将raw_inputargv结合起来制作一个可以从用户那里获得更多输入的脚本。”,你可以使用添加另一行来询问第四个输入。

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以运行脚本。 再次,这不是研究演习所要求你做的,但我希望它可能有所帮助。

是的,你可以做到这一点,但它有点棘手,作者在之前的练习中没有提到它。

argv实际上是一个list [](或数据数组),因此您可以在脚本中处理其各个元素。

这是我的例子:

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]

我现在正在学习这个,我想他只是想让你思考并尝试更多。 这是我的代码:

from sys import argv

script, slave = argv
print "Superme master, slave %s is waiting for your order." % slave

slave_says = "Humble %s wants know your supreme name, master:\n" % slave
name = raw_input(slave_says)

want = raw_input("What do you want, my superme master?\n")
if want == "Make you freedom.":
    print "When you make me freedom. you are also make yourself freedom."
else:
    print "Yes, my superme master."

我正在使用 Python 3.x 版本(所以要获取用户输入,我只需使用 input() 函数)

提到LPTHW,我想作者希望我们分别使用input()和argv。

这是我的例子。

from sys import argv
script,first,second,third = argv 
age = input("Enter your age")

print("The script is called:",script)
print("Your first variable is:",first)
print("Your second variable is:",second)
print("Your third variable is:",third)
print("Your age is",age)

如果你在ipython笔记本中,那么他的想法应该是这样的

% run ex13.py 1st 2nd 3rd

如果你在命令行

 python ex13.py 1st 2nd 3rd

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM