Python - 如何以连续的方式连接字符串?

 fanguobiao 发布于 2023-02-13 09:00

你能告诉我我的代码是否有更优雅的解决方案我需要什么?

我的小程序从最多七个输入字段输入文本(确切的数字可以由用户指定).然后将输入字符串与散布的固定文本元素连接起来.生成字符串形式的单个输出.

该程序完美无缺.然而,我的编程让我觉得非常不优雅和非pythonic.你能帮助我改进,促进我的学习吗?

两点:

1)我想总结所有七个文本输入的字符串长度.我明白地添加了它们,这并不优雅.我怎么能这样做更好?

string_length = len(str(E1.get())) + len(str(E2.get())) + len(str(E3.get())) +   len(str(E4.get())) + len(str(E5.get())) + len(str(E6.get())) + len(str(E7.get()))

2) 根据用户使用Tkinter Scale S指定的输入字段数,启用或禁用输入字段(En)以进行输入.

然后,从这些Entry字段派生的Strings str(En.get())其间的固定字符串元素partM连接,以产生字符串m.(整个字符串的两侧也是partL和partR.)我通过get()方法查询比例S的变量(输入字段的数量)来完成此操作.然后程序决定如何通过if/elif继续?

设置的比例越高,添加的文本元素越多.然而,这是非常相似的任务,因为可能有更直接的解决方案.

这会产生很长的代码行,并且不适合扩展程序以获取更多的Entry字段.我怎么能做得更好?

代码摘录:

if S.get() == 1:
    if string_length == 22*S.get():        
        m = partL + str(E1.get()) + partR
        do_something()
    else:
        warning()

elif S.get() == 2:
    if string_length == 22*S.get():            
        m = partL + str(E1.get()) + partM + str(E2.get()) + partR
        do_something()
    else:
        warning()

elif S.get() == 3:
    if string_length == 22*S.get():
        m = partL + str(E1.get()) + partM + str(E2.get()) + partM + str(E3.get()) + partR
        do_something()
    else:
        warning()

我是Python的新手.我也是编程新手.然而,我很自豪我写了一些工作正常的代码,并为我和其他人做了一些有用的事情.我欢迎任何建议.

1 个回答
  • 如果您的字段是E1到E7,并且每个字段都有一个get方法,则应该为您提供它们的总长度:

    fields = [E1, E2, E3, E4, E5, E6, E7]
    total_length = sum(len(str(f.get())) for f in fields)
    

    如果您只想要收集的值,这就足够了:

    fields = [E1, E2, E3, E4, E5, E6, E7]
    values = [f.get() for f in fields]
    

    2023-02-13 09:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有