【问题标题】:Advice needed on shorthand if else shorthand如果其他速记需要速记建议
【发布时间】:2019-10-02 00:55:45
【问题描述】:

我正在尝试以简写形式编写 if else 语句。 一个 if else 来检查一个值,如果它没有达到一个值则增加,否则减去一个设定的数字。

作为 if else 这可行,但尝试将此作为速记版本并被卡住。

在这种情况下您不能使用 -= 或 += 吗?任何有助于理解的帮助将不胜感激。

已尝试 day-=7 if day == 7 else day+=1 - 但知道这是错误的,因为左侧已经引用了 var。

如果其他工作正常

day = 5
if day == 7:
    day-=7
else:
    day+=1

试图用简写形式写出这个,但我在正确的一天 +=1 得到一个错误,因为这显然是不正确的。寻找一些关于如果 day != 7 时如何增加 day 值的建议

day = 5
day-=7 if day == 7 else +=1

+=1 会引发错误。

预计第 6 天

【问题讨论】:

  • 查看模数...here 是一些示例

标签: python


【解决方案1】:
day += -7 if day == 7 else 1

您的阅读方式是“如果day == 7,则在day 上加负7,否则,在day 上加1”

Dagorodir 的原始答案不起作用,因为如果day != 7,它将从当前值中减去 (day + 1)。因此,使用您的示例,day 的起始值为 5,从另一个答案运行代码的结果是 -1

【讨论】:

    【解决方案2】:

    您说对了,在 Python 中的“条件表达式”的上下文中,您不能在某些地方使用赋值运算符 -=+=。我的理解是,简写 if-else 是一个表达式,而不是一个语句,如您最初的示例所示。您不能在右侧进行赋值,而是在左侧指定返回值(如果为 false),如果为 true 则指定返回值(或分配给变量)。

    在您的第二次尝试中,在右侧,您使用了没有变量的赋值运算符。如果您希望条件评估采用更复杂的值,您可以分配给变量:

    day = 5
    ret_false = day + 1
    ret_true = day - 7
    ret_true if day == 7 else ret_false
    

    请参阅 Samantha 的答案以获得更优雅的解决方案:+= 增量赋值运算符用于评估表达式中的 TrueFalse - 因此左侧需要 -7,而 += 1以其他方式分配。我在她的回答中重复解决方案的倒数来说明语法的机制;在左侧使用递减的 -= 运算符会强制在右侧使用它 -

    day -= 7 if day == 7 else -1 
    

    按照上面的逻辑,我下面的原始建议使用左边的递减-=赋值运算符;如果为真,则返回day-7,如果为假,则返回day-(day+1)。感谢 Samantha 指出这一点。

    原创

    试试:

    day -= 7 if day == 7 else day + 1
    

    对此有很多问题:例如herehere

    【讨论】:

      【解决方案3】:

      对我来说这是最易读的,使用模算术

      day = 5
      day = (day + 1) % 7
      print(day)
      # result 6
      
      day = 6
      day = (day + 1) % 7
      print(day)
      # result 0
      

      【讨论】:

        【解决方案4】:

        我有两个选择:

        day = day + (-7 if day == 7 else 1)
        

        day = day -7 if day == 7 else day + 1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-17
          • 2018-07-10
          • 2017-05-16
          相关资源
          最近更新 更多