【问题标题】:Python solutionsPython 解决方案
【发布时间】:2014-09-28 21:42:30
【问题描述】:

在这种情况下,我试图一次删除一个字符,直到字符串(等式)中的等号。

   def solutions(expression):
        positionOfEqualSign = expression.find("=")
        for i in range(0, len(expression)):

            for exp in range(i, positionOfEqualSign):
                if expression[i].isdigit():
                    print(expression[:i] + expression[i+1:])

例如,如果我以 solutions('1+2=2+1') 运行它,我应该只会得到 2 个可能的解决方案:

+2=2+1
1+=2+1

但我得到了:

+1=2+1
+1=2+1
+1=2+1
1+=2+1

为什么它会输出 4 种不同的可能解决方案,而其中 3 种是相同的?我究竟做错了什么? 附:忽略表达式的第二部分。

【问题讨论】:

  • 如果您一次删除一个字符直到字符串中出现等号,它如何变成+2=2+1?
  • 您有两个 for 循环,其中一个有错误的端点,另一个您忽略了。也许您应该更仔细地查看代码?
  • @PadraicCunningham 我忘了说,我正在删除,字符串中只有整数,而不是操作数

标签: python string char


【解决方案1】:

这就是诀窍:

def solutions(s):
    for i,c in enumerate(s):
        if c=='=':
            break
        elif c.isdigit() :
            print s[:i]+s[i+1:]

但我不知道它在更一般意义上有什么好处。

【讨论】:

  • 或者你可以使用列表推导: expr='1+2=2+1' print [expr[:i]+expr[i+1:] for i,c in enumerate(expr .split('=')[0]) if c.isdigit()]
【解决方案2】:

好吧,我稍微改了一下:

def solve(expression):
    positionOfEqualSign = expression.find("=")
    for i in range(0, len(expression)):

        if expression[i] == '=':
           break
        elif expression[i].isdigit():
           print(expression[:i] + expression[i+1:])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 2011-06-25
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多