【问题标题】:Python 3.7 does not support assignment expressionsPython 3.7 不支持赋值表达式
【发布时间】:2021-01-27 20:35:00
【问题描述】:

我有以下代码:

n = int(input())
a, b, c = map(int, input().split())
result = sum(s // c + 1 for i in range(n) for j in range(n - a * i) if (s := n - a * i - b * j - 1) >= 0)
print(result)

但是我有一个错误,Python 3.7 在这部分不支持赋值表达式(s := n - a * i - b * j - 1)。我该如何重写它?我想改写成python3.7

【问题讨论】:

  • 海象算子:=是3.8引入的
  • @JoeFerndz 它实际上是否称为“海象”运算符?太好了:-D
  • 建议 - 升级你的 Python 版本。
  • @RocketHazmat 不是正式的。我相信这个词是从其他语言中提取出来的。

标签: python


【解决方案1】:

简单但重复的解决方法是“内联”s 的值。

result = sum((n - a * i - b * j - 1) // c + 1 
              for i in range(n) 
              for j in range(n - a * i) if n - a * i - b * j - 1 >= 0)

【讨论】:

    【解决方案2】:

    首先将生成器表达式转换为纯代码,然后这是一项简单的任务:

    result = 0
    for i in range(n):
        for j in range(n - a * i):
            s = n - a * i - b * j - 1
            if s >= 0:
                result += s // c + 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 1970-01-01
      • 2019-08-31
      相关资源
      最近更新 更多