阶乘奇数加偶数减c语言,在Python中加偶数,减奇数

您可以将conditional expression与for循环一起使用,在运行的total/sm中添加偶数并减去奇数:lst = [6,8,95,2,12,152,4,78,621,45]

sm = 0

for ele in lst:

sm = sm + ele if not ele % 2 else sm - ele

对于偶数,if not ele % 2将为True,因为0是一个错误的值。在

您还可以检查least significant bit,if ele & 1,如果为True,则表示该数字为奇数,或者{}来查找偶数:

^{pr2}$

print(sum(-ele if ele & 1 else ele for ele in lst))

sum与list一样是一个内置函数,因此请尽量避免使用其中一个作为变量名。在

只是出于兴趣一些时间安排:In [8]: timeit sum(-x if x % 2 else x for x in lst)

1000000 loops, best of 3: 1.44 µs per loop

In [9]: %%timeit

sm = 0

for ele in lst:

sm = sm + ele if not ele % 2 else sm - ele

...:

1000000 loops, best of 3: 1.12 µs per loop

In [11]: timeit sum(-ele if ele & 1 else ele for ele in lst)

1000000 loops, best of 3: 1.27 µs per loop

In [13]: %%timeit

sm = 0

for ele in lst:

sm = sm + ele if not ele % 2 else sm - ele

....:

1000000 loops, best of 3: 1.11 µs per loop

In [14]: %%timeit

sm = 0

for ele in lst:

sm = sm - ele if ele & 1 else sm + ele

....:

1000000 loops, best of 3: 875 ns per loop

In [15]: %%timeit

....: total = 0

....: for x in lst:

....: if x % 2: # odd

....: total -= x

....: else: # even

....: total += x

1000000 loops, best of 3: 1.02 µs per loop

In [16]: timeit sum(x * (1 - (x % 2 * 2)) for x in lst)

100000 loops, best of 3: 2.2 µs per loop

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮您解答这个问题。 以下是用C语言实现计算器乘除和阶乘的功能的代码示例: ```c #include <stdio.h> // 法 float add(float a, float b) { return a + b; } // 法 float subtract(float a, float b) { return a - b; } // 乘法 float multiply(float a, float b) { return a * b; } // 除法 float divide(float a, float b) { if (b == 0) { printf("Error: division by zero\n"); return 0; } return a / b; } // 阶乘 int factorial(int n) { if (n < 0) { printf("Error: cannot calculate factorial of a negative number\n"); return 0; } int result = 1; for (int i = 1; i <= n; i++) { result *= i; } return result; } int main() { float a, b; int n; char operator; printf("Please enter an operator (+, -, *, /) or f (factorial): "); scanf("%c", &operator); if (operator == 'f') { printf("Please enter a non-negative integer: "); scanf("%d", &n); printf("%d! = %d\n", n, factorial(n)); } else { printf("Please enter two numbers: "); scanf("%f %f", &a, &b); switch (operator) { case '+': printf("%f + %f = %f\n", a, b, add(a, b)); break; case '-': printf("%f - %f = %f\n", a, b, subtract(a, b)); break; case '*': printf("%f * %f = %f\n", a, b, multiply(a, b)); break; case '/': printf("%f / %f = %f\n", a, b, divide(a, b)); break; default: printf("Error: invalid operator\n"); } } return 0; } ``` 在上面的示例代码中,我们定义了四个函数,分别用于实现法、法、乘法和除法。另外还定义了一个函数用于计算阶乘。在 `main` 函数中,我们首先读取用户输入的操作符,然后根据操作符的不同,调用相应的函数进行计算。如果用户输入的是阶乘操作符,那么我们就读取用户输入的一个整数,并调用阶乘函数进行计算。 希望这个答案能够帮到您,如果您还有其他问题,可以继续问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值