我正试图写一个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
答案 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
有关更优雅的解决方案,请参考萨曼莎的答案:+=
增量赋值运算符用于对表达式中的True
或False
进行求值-因此-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
答案 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