简单的python“打印自己的参数”

时间:2012-05-06 03:41:56

标签: python

我刚刚发现,在我的课程中,讲师不希望我们使用“导入”功能,因为它显然“过于先进,无法满足学生的需求。”

弄清楚我“被允许”使用的内容,我想出了这个:

#!/usr/bin/python
moo = raw_input ('moo ')
string = ''.join(moo) 
outp = string.split() 
for word in outp:
  print word

给了我

$ ./pecho
moo hello       world
hello
world

如何摆弄我在这里将“hello world”输出放在一行?


原帖:

我需要创建一个python文件,“只是打印自己的参数,每个参数由一个空格分隔。” 例如,以下命令将显示输出:

$ pecho first    and  then    another    one
first and then another one
$

这就像是

#!/usr/bin/python
moo = raw_input ('moo ')
print moo

? 如果是这样的话,我怎么做才能使它在输出中的单词之间只打印一个空格,而不管输入中有多少个制表符/空格?

1 个答案:

答案 0 :(得分:3)

以下是修订后问题的答案:

moo = raw_input ('moo ')
print ' '.join(moo.split())

从parens的内部开始,我们首先获取输入moo并根据空白将其拆分为多个部分。这给了我们一个可迭代的列表,类似于旧答案中的sys.argv

然后,我使用join和单个空格加入该列表。然后打印整个交易。

为了更好地理解这一点,这里是相同的,但使用更多的行:

moo = raw_input('moo ')
temp_list = moo.split()
print ' '.join(temp_list)

尝试打印temp_list,看看它是什么样的。

只需将其添加为最后一行,即可查看列表的打印方式:

print temp_list

你可能想要这个:

import sys

if len(sys.argv) > 1:
    for arg in sys.argv[1:]:
        print arg,

sys.argv是命令行参数的列表。第一个是脚本的名称。

list是一种可迭代类型,因此您可以使用for循环来迭代它。我拆分列表,以便从第二项开始。

我在打印行的末尾使用逗号告诉python不要打印换行符。在python 3中有不同的方法。

python 3中,最后一行是:

print(arg, end=" ")

要使用Dan D的示例,您可以这样做:

import sys

if len(sys.argv) > 1:
    print ' '.join(sys.argv[1:])

您仍然可以进行测试,以确保您的脚本名称至少多了一个arg。它joins将可迭代列表与每个项目之间的空格放在一起。