首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于单词计数和/或行计数程序的参数解析器

用于单词计数和/或行计数程序的参数解析器
EN

Code Review用户
提问于 2015-09-14 17:35:23
回答 2查看 999关注 0票数 1

在这个例子中,如何使代码变干?我的程序正在工作,但我想通过缩短代码来改进它。。

代码语言:javascript
复制
parser = argparse.ArgumentParser()
parser.add_argument('--words', '-w', action='store_true')
parser.add_argument('--lines', '-l', action='store_true')
parser.add_argument('filename')
args = parser.parse_args()

if args.words:
    print "Words in a file: {}" .format(print_words(args.filename))

elif args.lines:
    print "Lines in a file: {}" .format(print_lines(args.filename))

else:
    print "Words in a file: {}" .format(print_words(args.filename))
    print "Lines in a file: {}" .format(print_lines(args.filename))

我想,通过添加一个新函数并将函数调用放入else语句中。

我尝试使用print_all函数,我在the语句中添加了函数调用。

代码语言:javascript
复制
def print_all(filename, args):
    for a in read_file(filename):
        if a in args:
            print "All word counts :", a

当我使用print_all函数运行程序时,我得到:

Namaspace(words=False,filename=‘omeFile.txt’,lines=False)

EN

回答 2

Code Review用户

回答已采纳

发布于 2015-09-14 18:35:36

很难理解您的问题,但您似乎需要以下参数:

  • filename -要读取输入的文件名
  • --words -显示文件中的单词
  • --lines -显示文件中的行

如果两者都指定了,则当前代码将只执行第一个代码。如果没有指定,您将同时显示两者。如果您的问题与避免代码在of语句中的重复有关,您可以将代码的最后一部分重做如下:

代码语言:javascript
复制
if not args.words and not args.lines:
    args.words = True
    args.lines = True

if args.words:
    print_words(args.filename)

if args.lines:
    print_lines(args.filename)

注意我也删除了亚诺斯建议的奇怪结构..。

票数 3
EN

Code Review用户

发布于 2015-09-14 18:33:10

你注意到这条线上有什么可疑的东西吗?

打印“文件中的单词:{}”.format(print_words(args.filename))

如果我只强调鱼腥味的部分:

打印print_words(…)

鱼的部分是打印由print_words返回的东西。print_words的名字表明它打印了一些东西。而打印函数通常不返回值。所以这一切都很令人困惑。

我的猜测是,print_words实际上并不打印单词,而是返回单词计数。因此,像get_word_count这样的名字就不会那么让人困惑了。print_lines也是如此。

通过这些建议的重命名,现在我们可以引入一些真正的打印功能,并使代码更加枯燥:

代码语言:javascript
复制
if args.words:
    print_words(args.filename)

elif args.lines:
    print_lines(args.filename)

else:
    print_words(args.filename)
    print_lines(args.filename)

它不会变得比这个更干,而且我不认为它需要。

票数 3
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/104660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档