如果需要速记,则需要速记的建议

时间:2019-05-14 23:23:59

标签: python

我正试图写一个if else语句。 如果不是,则检查一个值,如果尚未达到一个值,则递增;否则减去一个设定的数字。

这似乎可行,但尝试将其作为速记版本并卡住。

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

尝试过day- = 7,如果day == 7,否则day + = 1-但知道这是错误的,因为已经在左侧引用了var。

如果其他方法都正常

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

尝试以简写形式编写此代码,但在正确的日子+ = 1时出现错误,因为这显然是错误的。寻找有关如何在day!= 7时增加日值的建议

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

+ = 1引发错误。

预计天数为6

4 个答案:

答案 0 :(得分:5)

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

您的阅读方式是“如果day,请向day == 7添加负7,否则,请向day添加1”。

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

答案 1 :(得分:1)

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

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

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

有关更优雅的解决方案,请参考萨曼莎的答案:+=增量赋值运算符用于对表达式中的TrueFalse进行求值-因此-7是必需的在左侧,而+= 1被另外分配。我在她的回答中重复了解的反面,以说明语法的机制。使用左侧的递减-=运算符可在右侧强制使用-

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

根据上述逻辑,我的原始建议如下:使用左侧的递减-=赋值运算符;如果为true,则返回day-7,如果为false,则返回day-(day+1)。感谢萨曼莎(Samantha)指出这一点。

原始

尝试:

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

对此有很多问题:例如herehere

答案 2 :(得分:0)

对我来说,这是最易读的模运算法则

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

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

答案 3 :(得分:0)

我有两个选择供您选择:

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

OR

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