这个旋转硬币的小功能不起作用

This little function to rotate a coin isn't working

我正在做一个小程序。该程序的工作原理如下:

1-你输入你想要多少个硬币

2- U 把它们全部 'heads'

3-从第二枚硬币开始,你开始掷指数为2的倍数的硬币,当你完成后你回到开始重新开始,但这次你将从第三枚硬币开始并翻转所有索引为3的倍数,并继续这样,从第四个硬币开始翻转4的倍数并继续直到结束...

示例:4 个硬币--> 头,头,头,头

1°时间: 人头,人头,人头,人头,

2°时间: 头,高个,高个,高个,

3°时间: 人头,人头,人头,人头。

我认为这段代码快要实现了,但是我构建的这个函数并没有完成掷硬币和更改 'moedas' 列表

上的 'mode' 的工作

词汇:Heads-cara / Talls - coroa /Coin(s)- moeda(s) /To flip - Virar(葡萄牙语)

如果能帮助我更改其余代码中的一些错误,我将不胜感激。

def Virar(moeda):
    if moeda == 'cara':
        moeda = 'coroa'
    if moeda == 'coroa':
        moeda = 'cara'

    return moeda

qtde_moedas = int(input('How much coins do u want?'))
moedas=[]
while (len(moedas))<qtde_moedas:
    moedas.append('cara')

for divisor in range(2,len(moedas)):
    for index_num in range(len(moedas)):
        if (index_num+1)%divisor==0:
            moedas[index_num] = Virar(moedas[index_num])
        else:
            pass

假设您将 'cara' 传递给您的函数 Virar;首先它将 moeda 更改为 'coroa',因为它是 'cara'。然后,它检查 moeda 是否是 'coroa',现在是 True,所以它把它变回 'cara'!所以 Viara 永远不会 随心所欲地抛硬币。相反,请尝试使用 elifelse:

def Virar(moeda):
    if moeda == 'cara':
        moeda = 'coroa'
    else:
        moeda = 'cara'
    return moeda

一个较短的版本,如果您有兴趣,将是以下内容:

def virar(moeda):
    return 'coroa' if moeda == 'cara' else 'cara'

qtde_moedas = int(input("How many coins do you want? "))
moedas = ['cara'] * qtde_moedas

for divisor in range(2, qtde_moedas + 1):
    for i in range(divisor - 1, qtde_moedas, divisor):
        moedas[i] = virar(moedas[i])

print(moedas)