在django模板中,我完成了这个{% if forloop.first %}但是我不知道如何在常规'ole python中执行此操作而不用编写一个笨重的计数器来计算我的条件迭代.他们是一个简单的出路吗?
是否可以使用条件运算符表达案例?例如 :
if(rval==1)
DO THIS 1;
else if(rval==2)
DO THIS 2;
else if (rval ==3)
DO THIS 3;
Run Code Online (Sandbox Code Playgroud) 我有这个变量.
$productId = 2; // Testing ID
$value->id; // Contains INT
$value->datePurchaseEnd; // Contains UNIXTIME or NULL
Run Code Online (Sandbox Code Playgroud)
我想要的条件.
if ($value->id == $productId) return true;
但如果$value->datePurchaseEnd;不是NULL那么也将它与当前时间进行比较,它必须大于当前时间才能返回TRUE;
现在这是我制作的代码:
if( $value->id == $productId){
if( $value->datePurchaseEnd == NULL ){
$return = TRUE; break;
}else{
if( $value->datePurchaseEnd > mktime() ){
$return = TRUE; break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我觉得这段代码并不好.
有没有建议用上面的条件制作更好的代码?
这段代码不起作用
int main(){
cout << 5 ? (5 ? 0 : 2) : 5;
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码有效
int main(){
cout << (5 ? (5 ? 0 : 2) : 5);
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
不明白为什么?
我最近发现了这个问题:Does Python have a ternary conditional operator? 并发现称为三元条件的东西a = b if c == d else e。
我的问题:有一种方法可以使三元条件与elif? 类似的东西a = b if c == d elif e == f i else j。
我正在学习C ++中的优先规则。据说其中条件运算符具有从右到左的关联性。我将其解释为对表达式的评估从右开始,然后从左开始。因此,对于以下代码,
int a=1, b=2, c;
c=a>b? a=a*2: a=a+3;
cout<<c<<" "<<a;
Run Code Online (Sandbox Code Playgroud)
我假设输出为
8 8
Run Code Online (Sandbox Code Playgroud)
但是实际输出是
4 4
Run Code Online (Sandbox Code Playgroud)
我不了解这种关联性实际上是如何工作的,因为从上面的输出中,在我看来,条件运算符已经从左到右具有关联性。
c++ conditional-operator associativity right-to-left left-to-right
我必须在使用条件运算符的.erb模板中放一些东西。
在下面的代码中,您可以看到我正在检查条件值,如果不为零,则打印相同的值。
<%= (@variable.value.nil?) ? "-" : @variable.value %>
Run Code Online (Sandbox Code Playgroud)
我想应该有一个更短的方法来做到这一点。两次写相同的东西看起来真的很丑。
我正在尝试在三元运算符中实现 goto:
所以这就是我在做什么:
(a<5 && done==0) ? ({goto dd;}) : ({goto ee;});
Run Code Online (Sandbox Code Playgroud)
使用这些大括号,我试图将语句转换为表达式。
问题是,两个标签都在执行。为什么?
这是代码(Ideone 链接):
#include<stdio.h>
int main()
{
int a=0,sum=0;
int done=0;
(a<5 && done==0) ? ({goto dd;}) : ({goto ee;});
dd:
printf("%d - %d -- %d\n",a,sum,done);
++a,sum+=a;
ee:
printf("done\n");
done=1;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找三元运算符语法来做类似的事情
a = [1, 2, 3, 4, 5]
if True:
a[1] += 1
else:
a[2] += 1
Run Code Online (Sandbox Code Playgroud)
我试过了
a[1] += 1 if True else a[2] += 1
Run Code Online (Sandbox Code Playgroud)
和
True and a[1] += 1 or a[2] += 1
Run Code Online (Sandbox Code Playgroud)
两者都抛出了错误
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
有人知道这样做的三元方法吗?
提前致谢!
所以我有两个选择,两个函数都具有相同的类型:
(Entry->d_type == DT_DIR ? rmdirr : remove)(CurrentEntryPath);
Run Code Online (Sandbox Code Playgroud)
或者
if (Entry->d_type == DT_DIR) {
rmdirr(CurrentEntryPath);
} else {
remove(CurrentEntryPath);
}
Run Code Online (Sandbox Code Playgroud)
我已经确认三元是 %100% 安全的,因为这两个函数都是兼容的指针类型。哪个更快(即使可读性较差)?
c ×3
c++ ×3
python ×3
performance ×2
conditional ×1
django ×1
dry ×1
function ×1
goto ×1
if-statement ×1
iterator ×1
php ×1
ruby ×1