0

我刚刚发现,在我的课程中,讲师不希望我们使用“导入”功能,因为它显然“对于目前学生的需求来说太先进了”。

弄乱我“允许”使用的东西,我想出了这个:

#!/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

? 如果是这样,无论输入中有多少个制表符/空格,我该如何让它在输出中的单词之间只打印一个空格?

4

1 回答 1

3

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

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

从括号内部开始,我们首先获取输入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 是命令行参数的列表。第一个是脚本的名称。

列表是一种可迭代类型,因此您可以使用for循环对其进行迭代。我拆分列表,以便从其中的第二项开始。

我在打印行的末尾使用逗号来告诉 python 不要打印换行符。在 python 3 中有一种不同的方法可以做到这一点。

python 3中,最后一行是:

print(arg, end=" ")

要使用Dan D的示例,您只需执行以下操作:

import sys

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

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

于 2012-05-06T03:43:22.740 回答