python # 输入一个正整数n,计算1-2+3-4...+(-)n的值

该篇文章介绍了如何使用Python编程语言实现一个算法,输入一个正整数n,通过循环结构计算1到n中奇数相加、偶数相减的和。代码中利用if-else语句判断每个数的奇偶性并进行相应的加减操作。
部署运行你感兴趣的模型镜像
# 3. 输入一个正整数n,计算1-2+3-4...+(-)n的值
#先找规律:奇数相加,偶数相减,只要判断出奇数偶数就可以计算
i = int(input("请输入一个正整数"))
p = 0 # 需要一个变量来接受最后的值
for q in range(1, i+1):
    if q % 2 == 1: #判断此数是奇数还是偶数, 此式子成立为真,此时q为奇数;反之为偶数
        p += q
    else:
        p -= q
else:
    print(p)

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

输入一个整数 `n`,要求计算数列 `1 - 3 + 5 - 7 + 9 - 11 + ...` 直到不超过 `n` 的和。这个数列的特点是: - 所有项都是**奇数** -1 开始,公差为 2 的等差数列 - 符号**交替变化**:正、负、正、负……(奇数位为正,偶数位为负) ### 分析 我们先找出规律: 数列为: 第1项:+12项:-33项:+54项:-7 第5项:+9 ... 可以看出: - 第 k 个奇数是:`2k - 1` - 符号是:`(-1)^(k+1)`,即奇数项为正,偶数项为负 我们要找的是所有满足 `2k - 1 <= n` 的项的带符号和。 也就是说,最大的 `k` 满足 `2k - 1 <= n` → `k <= (n + 1) / 2` 所以总共有 `m = floor((n + 1) / 2)` 个奇数项。 例如:n = 10,则奇数1,3,5,7,9 → 共 5 个 → m = 5 然后我们对这 m 个项求和,符号交替: ``` sum = 1 - 3 + 5 - 7 + 9 - ... = Σ_{k=1}^{m} (-1)^(k+1) * (2k - 1) ``` 我们可以直接循环实现,也可以推导公式,但为了清晰和通用性,这里用代码实现。 --- ###Python 实现 ```python def alternating_odd_sum(n): total = 0 term = 1 #一个奇数 sign = 1 # 正负号,初始为正 while term <= n: total += sign * term term += 2 #一个奇数 sign *= -1 # 交替符号 return total # 输入 n = int(input("请输入一个整数 n: ")) print("结果为:", alternating_odd_sum(n)) ``` --- ### 🔍 解释代码 - `term` 从 1 开始,每次加 2,生成奇数序列:1, 3, 5, 7... - `sign` 初始为 1(正),每轮乘以 -1 实现交替 - 只要 `term <= n` 就继续累加 - 最终返回带符号的和 --- ### 📌 示例 ```text 输入:n = 7 序列:1 - 3 + 5 - 7 = (1 - 3) + (5 - 7) = -2 + (-2) = -4 输出-4 输入:n = 1 序列:1 输出1 输入:n = 5 序列:1 - 3 + 5 = 3 输出3 ``` --- ### ✅ 更高效的数学方法(可选优化) 其实这个和可以分组计算: 观察: - 如果项数 m 是偶数(1 - 3) + (5 - 7) + ... = (-2) * (m // 2) - 如果 m 是奇数:前 m-1 项和为 -2 * ((m-1)//2),最后一项为正的最后一个奇数 但我们通常优先保证代码清晰,除非性能关键。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值