gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 18:31:34 25 4
gpt4 key购买 nike

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

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

该程序运行良好。然而,我的编程给我的印象是非常不优雅和非 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 字段派生的字符串 str(En.get()) 然后与之间的固定字符串元素 partM 产生字符串 m。 (整个字符串的两侧也有 partL 和 partR。)我通过查询变量来完成此操作通过 get() 方法获取比例 S(输入字段的数量)。然后程序决定如何通过 if/elif 进行?

设置的比例越高,添加的文本元素就越多。然而,这是一个高度相似的任务,这让我印象深刻,因为可能有更直接的解决方案。

这会产生很长的代码行,并且不太适合扩展程序以获取更多的输入字段。我怎样才能做得更好?

代码摘录:

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 的新手。我也是编程新手。然而,我很自豪我写了一些可以正常工作并且对我和其他人有用的代码。我欢迎任何建议。

最佳答案

如果您的字段是 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]

关于Python - 如何以连续的方式连接字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20363851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com