首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在任意位置插入括号?

在任意位置插入括号?
EN

Stack Overflow用户
提问于 2021-02-27 23:38:36
回答 1查看 23关注 0票数 0

stackoverflow社区!我再一次请求你的帮助...

我制作了一个随机方程生成器,它会生成如下所示的字符串:

代码语言:javascript
运行
复制
def strmaker():
    picker = random.randint(2, 5)
    if picker == 5:
        return "1" + random.choice(RandomSymbols) + "2" + random.choice(RandomSymbols) + "3" + random.choice(
            RandomSymbols) + "4" + random.choice(RandomSymbols) + "5"
    elif picker == 4:
        return "1" + random.choice(RandomSymbols) + "2" + random.choice(RandomSymbols) + "3" + random.choice(
            RandomSymbols) + "4"
    elif picker == 3:
        return "1" + random.choice(RandomSymbols) + "2" + random.choice(RandomSymbols) + "3"
    else: return "1" + random.choice(RandomSymbols) + "2"

典型的结果如下所示:

代码语言:javascript
运行
复制
1-2*3-4

所以基本上我想做的是:编写一些代码/函数,在任意位置插入一组或多组括号。

像这样!

代码语言:javascript
运行
复制
(1-2)*3-4

或者这个!

代码语言:javascript
运行
复制
(1-2)*(3-4)

或者..。

代码语言:javascript
运行
复制
(1-2*3)-4

我想你在这一点上明白了。做这件事最简单的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-28 01:00:21

当然,最懒惰的方法是添加更多的大小写,其中每个大小写对应于开始和结束括号的特定排列。例如,我们可以添加案例:

代码语言:javascript
运行
复制
elif picker == 6:
  return "(1" + random.choice(RandomSymbols) + "2)"

然而,我认为我们可以做得更好,特别是考虑到这个程序强制每个数字只有一个数字长度的约束(如果我们想要推广到具有更多数字的代码,这将有点麻烦,但我认为应该不是太糟糕)。这个约束的意思是,如果我们要插入一个左括号,我们需要恰好插入一个右括号3,5,7,...字符离开。特别地,我们可以编写类似这样的代码:

代码语言:javascript
运行
复制
s = strmaker()
i = 0
while i < len(s) - 2:  # len(s) - 2 since we never want a starting paren on the last number
  if random.randint(0, 1): # 50% chance of opening paren, can be tuned
    s = s[:i] + "(" + s[i:]
    i += 2
    while i < len(s) - 2:
      i += 2
      if random.randint(0, 1): # 50% chance of closing paren, again can be tuned
        s = s[:i] + ")" + s[i:]
        break
    if i >= len(s) - 2: # safety closing paren
      s = s + ")"
  i += 2

这不是我写过的最干净的代码,但它应该清楚解决方案是如何工作的(它只是在每个可能的位置添加括号,概率为50%,然后向前移动)。如果您有任何问题,请告诉我/希望我帮您整理一下

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

https://stackoverflow.com/questions/66400431

复制
相关文章

相似问题

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