【问题标题】:python function compression [closed]python函数压缩[关闭]
【发布时间】:2013-08-01 04:44:29
【问题描述】:

我已经编写了这个大函数来在我的 python 代码中进行一些格式化。无论如何,你能建议把它变小吗?

def disfun(String1,String2,String3):
        if String3 == "A" or String3 == "B":
            if String3 == "A":
                pass
            elif String3 == "B":
                print "#"*54

            print "##"," "*48,"##"
            print "##",'{0:^48}'.format(String2),"##"
            print "##",'{0:^48}'.format(String1),"##"
            print "##"," "*48,"##"
            print "#"*54

        elif String3 == "C":
            print "-"*40
            print "--",'{0:^34}'.format(String2),"--"
            print "-"*40

        elif String3 == 'D':
            String2 = ' * '.join(String2)
            print "#"*54
            print "##",'{0:^48}'.format(String2),"##"
            print "##",'{0:^48}'.format(String1),"##"
            print "#"*54

        elif String3 == 'E':
           print "*"*54
           print "**",'{0:^48}'.format(String2),"**"
           print "**",'{0:^48}'.format(String1),"**"
           print "*"*54

【问题讨论】:

  • 我很困惑,你甚至没有定义变量“string”
  • string 可以是一个全局变量(这不是一个好名字,因为标准的 string 模块,不过)。
  • 当您编辑原始发布的代码以响应某个答案时,使答案不再有意义时,它真的会混淆未来出现的人。
  • 更新了代码。抱歉,代码中有错别字

标签: python python-2.6


【解决方案1】:
if String3 == "A":
    pass
elif String3 == "B":
    print "#"*54

很容易变成...

if String3 == "B":
    print "#"*54

另外,B、D 和 E 之间还有一堆共享代码:

def disfun(String1,String2,String3):

    if String3 in ("B", "D", "E"):
        print "#"*54

        if String3 == "B":
            print "##"," "*48,"##"

        if String2 == "D":
            String2 = ' * '.join(String2)

        print "##",'{0:^48}'.format(String2),"##"
        print "##",'{0:^48}'.format(String1),"##"
        print "##"," "*48,"##"
        print "#"*54

    elif String3 == "C":
        print "-"*40
        print "--",'{0:^34}'.format(String2),"--"
        print "-"*40

【讨论】:

  • True 已经减少了我之前编写的 5 个不同函数的代码。错过了。谢谢:)
【解决方案2】:

我会尝试将所有格式简化为一次调用:

def marquee (width,  *content, headerCharacter = '#'):
   print headerCharacter  * width
   for item in content:
       print "%s%s%s" % (headerCharacter * 2, content.center(width - 4), headerCharacter * 2)
   print headerCharacter  * width

然后更改所有逻辑,使其简单地选择正确的*内容(看起来您有一两个项目,具体取决于代码路径)和标题字符

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 2010-11-04
    • 2013-10-30
    • 1970-01-01
    相关资源
    最近更新 更多