You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python硬币翻转程序自定义翻转函数失效及逻辑异常问题求助

代码问题排查与修复

存在的两处核心错误

  • Virar函数逻辑错误:函数内的两个if判断为顺序执行,当输入值为cara时,第一个if将值修改为coroa后,第二个if会立刻匹配新值coroa,又将值改回cara,等于没有完成翻转操作。
  • 外层循环范围错误:Python的range()为左闭右开区间,原代码range(2, len(moedas))会漏掉divisor等于硬币总数量的轮次。比如4枚硬币的场景,仅会执行除数为2、3的轮次,缺少除数为4的轮次,无法得到示例中的正确结果。

修复后的完整代码

def Virar(moeda):
    if moeda == 'cara':
        return 'coroa'
    # 只有当前值不是cara时才会走到这一步,直接返回cara即可
    return 'cara'

qtde_moedas = int(input('请输入硬币总数量:'))
moedas = ['cara'] * qtde_moedas  # 简化初始化逻辑,不需要while循环

# 调整range的结束值为len(moedas)+1,覆盖到所有除数轮次
for divisor in range(2, len(moedas)+1):
    # 优化内层循环:直接遍历序号为divisor倍数的索引,无需遍历所有硬币
    for index_num in range(divisor-1, len(moedas), divisor):
        moedas[index_num] = Virar(moedas[index_num])

# 可添加打印语句验证结果,示例4枚硬币运行后输出 ['cara', 'coroa', 'coroa', 'cara']
print(moedas)

内容的提问来源于stack exchange,提问作者thiago silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:54:05