笨方法学Python 习题 13: 参数、解包、变量
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)
运行结果如下:
$ python ex13.py first 2nd 3rd
The script is called: ex13.py
Your first variable is: first
Your second variable is: 2nd
Your third variable is: 3rd
$ python ex13.py cheese apples bread
The script is called: ex13.py
Your first variable is: cheese
Your second variable is: apples
Your third variable is: bread
$ python ex13.py Zed A. Shaw
The script is called: ex13.py
Your first variable is: Zed
Your second variable is: A.
Your third variable is: Shaw
加分习题
①给你的脚本三个以下的参数。看看会得到什么错误信息。试着解释一下。
ValueError :not enough values to unpack.
②再写两个脚本,其中一个接受更少的参数,另一个接受更多的参数,在参数解包时给它们取一些有意义的变量名。
将 raw_input 和 argv 一起使用,让你的脚本从用户手上得到更多的输入。
记住“模组(modules)”为你提供额外功能。多读几遍把这个词记住,因为我们后面还会用到它。
常见问题回答
运行时错误信息 ValueError: need more than 1 value to unpack。
记住,有一个很重要的技能是注重细节。如果你仔细阅读并且完整重复了“你应该看到的结果”部分的命令参数,你就不会看到这样的错误信息。
argv 和 raw_input() 有什么不同?
不同点在于用户输入的时机。如果参数是在用户执行命令时就要输入,那就是 argv, 如果是在脚本运行过程中需要用户输入,那就使用 raw_input()。
命令行参数是字符串吗?
是的,就算你在命令行输入数字,你也需要用 int() 把它先转成数字,和在 raw_input() 里一样。
命令行该怎么使用?
这个你应该已经学会了才对。如果你还没学会,就去读读我写的《命令行迫降式入门》吧 http://cli.learncodethehardway.org/book/
argv 和 raw_input() 不能合起来用。
别想太多了。在脚本结尾加两行 raw_input() 随便读取点用户输入就行了,然后再慢慢在脚本中玩玩这两个东东。
为什么 ``raw_input(‘? ‘) = x``不灵?
因为你写反了。照着我的写就没问题了。
上一篇: 笨办法学Python-习题5
下一篇: Javascript 面向对象编程(二)