【问题标题】:how can i add 1 or subtracting 1 to mine variable if i find a certain value in a text?如果我在文本中找到某个值,如何为我的变量加 1 或减 1?
【发布时间】:2022-12-06 09:03:29
【问题描述】:

如果我在文本中找到值“(”,我需要对 1 求和;如果我在文本中找到“)”,我需要对 1 求和。我无法弄清楚我做错了什么

我起初尝试这样做!

file = open("day12015.txt")

sum = 0
up = "("

for item in file:
    if item is up:
        sum += 1
    else:
        sum -= 1
print(sum)

我有这么长的文本,如以下示例 (((())))((((... 如果我找到 ) 我需要减去 1,如果我找到 ( 我需要加 1... 我怎么能解决它??即使我手动更改我的文件,我总是得到 0 作为输出....

【问题讨论】:

  • 一些建议:sum 是 Python 中的内置函数。将它用作变量会覆盖内置函数,这会导致令人沮丧且难以发现的错误。另一件你应该养成的习惯是使用with open("some_file_path") as file,这是一个上下文管理器,它会在你使用完文件后自动关闭它。此外,您应该使用相等运算符 == 而不是 is 进行比较。

标签: python


【解决方案1】:

您的 for 循环仅获取文件中的所有字符串,因此您必须遍历字符串以获得所需的输出。

例子.txt

(((())))(((((

完整代码

file = open("Data.txt")

sum = 0
up = "("

for string in file:
    for item in string:
        if item is up:
            sum += 1
        else:
            sum -= 1
print(sum)

输出

5

希望这会有所帮助。快乐编码:)

【讨论】:

  • 我建议向 OP 展示他们的代码中还有其他可以改进的地方。他们应该使用上下文管理器来读取文件;他们不应该使用 sum 作为变量;他们应该使用 == 进行相等性检查,而不是 is 等。
  • 是的,我肯定会更改 sum 变量......我用 == 编辑并解决了它......这是什么意思 OP?什么是上下文管理器?
【解决方案2】:

这只是计算文本中每个字符的问题。总和是这些计数之间的差值。看:

from pathlib import Path

file = Path('day12015.txt')

text = file.read_text()

char_sum = text.count('(') - text.count(')')

例如,对于您发布的字符串,我们有:

>>> p = '(((())))((((('
>>> p.count('(') - p.count(')')
5
>>> 

【讨论】:

  • FWIW,这需要对输入进行两次迭代。
  • 的确。但我很确定在这种情况下这不是问题。
  • 当然可以,但是 OP 应该学习如何编写基本算法,而不是盲目地依赖内置函数。像这样的回答都可以,但我建议先展示问题,展示解决方案,然后然后说“排除所有这些,这是您可以更轻松地做到的方法……”。当然只是我的意见。
  • 我同意。但了解该语言已经为他们做了什么也很好。
  • 也同意,因此我的编辑。
【解决方案3】:

因此,您需要对“(”字符求和 +1,对“)”求和 -1。

直接指定遇到此字符时发生的情况。您还需要在打开文件时从文件中读取行。在您的代码中,您为每个不是“(”的案例减去一个。

file = open("day12015.txt")
total = 0

for line in file:
    for character in line:
        if character == "(":
            total += 1
        elif character == ")":
            total -= 1

print(sum)

【讨论】:

  • 谢谢,我把多余的变量放在开头
猜你喜欢
  • 2021-06-27
  • 2012-05-25
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 2021-10-15
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多