1

我在 Windows 7 中使用 Python2.7.5。我是命令行参数的新手。我正在尝试做这个练习:

编写一个程序,在命令行上读入一个字符串,并返回字符串中出现的字母表以及每个字母出现的次数。例如:

$ python letter_counts.py "ThiS is String with Upper and lower case Letters."
a  2
c  1
d  1
# etc.

我知道如何将命令行参数添加到文件名并将它们输出到 cmd 的列表中(Windows 命令提示符)。但是,我想学习如何在 python 脚本中使用命令行参数——因为我需要添加/访问额外的命令行参数并创建一个循环来计算它们的字母。

在 cmd 之外,我目前只有 letter_counts.py 作为文件名——这只是一个命令行参数。

在 python not cmd 中:如何添加和访问命令行参数?

4

2 回答 2

2

您想使用sys模块中的sys.argv列表。它允许您访问在命令行中传递的参数。

例如,如果您的命令行输入是python myfile.py a b c, sys.argv[0]is myfile.py, sys.argv[1]is a, sys.argv[2]is b, and sys.argv[3]is c。

运行示例 ( testcode.py):

if __name__ == "__main__":
    import sys
    print sys.argv

然后,运行(在命令行中):

D:\some_path>python testcode.py a b c
['testcode.py', 'a', 'b', 'c']
于 2013-07-04T02:54:29.530 回答
0

您可以按照以下方式做一些事情:

#!/usr/bin/python

import sys

print sys.argv
counts={}
for st in sys.argv[1:]:
    for c in st:
        counts.setdefault(c.lower(),0)
        counts[c.lower()]+=1

for k,v in sorted(counts.items(), key=lambda t: t[1], reverse=True):
   print "'{}' {}".format(k,v)

python letter_counts.py "ThiS is String with Upper and lower case Letters."当使用打印调用时:

['./letter_counts.py', 'ThiS is String with Upper and lower case Letters.']
' ' 8
'e' 5
's' 5
't' 5
'i' 4
'r' 4
'a' 2
'h' 2
'l' 2
'n' 2
'p' 2
'w' 2
'c' 1
'd' 1
'g' 1
'o' 1
'u' 1
'.' 1

如果您不使用引号,如下所示:python letter_counts.py ThiS is String with Upper and lower case Letters.它会打印:

['./letter_counts.py', 'ThiS', 'is', 'String', 'with', 'Upper', 'and', 'lower', 'case', 'Letters.']
'e' 5
's' 5
't' 5
'i' 4
'r' 4
'a' 2
'h' 2
'l' 2
'n' 2
'p' 2
'w' 2
'c' 1
'd' 1
'g' 1
'o' 1
'u' 1
'.' 1

sys.argv请注意输出顶部列表中的差异。结果是单词之间的空格丢失并且字母数相同。

于 2013-07-04T03:40:12.953 回答