我在做一個小程式。該程式的作業原理如下:
1- 你把你想要多少硬幣
2-你把所有的人都放在“頭”上
3- 從第二個硬幣開始,您開始翻轉指數為 2 的倍數的硬幣,當您完成后回傳開始并重新開始,但這次您將從第三個硬幣開始并翻轉所有指數是 3 的倍數,并繼續這樣,從第四個硬幣重新開始并翻轉 4 的倍數并繼續直到結束......
示例:4 個硬幣--> 正面,正面,正面,正面
1°時間:頭,高,頭,高,
2°時間:頭,高,高,高,
3°時間:頭,高,高,頭。
我認為這段代碼快到了,但是我構建的這個函式并沒有完成翻轉硬幣和更改“moedas”串列中的“模式”的作業
詞匯: 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
uj5u.com熱心網友回復:
假設你傳遞'cara'給你的函式Virar;首先它更改moeda為'coroa',因為它是'cara'。然后,它檢查是否moeda是'coroa',True現在是,所以它把它轉回'cara'!所以Viara 永遠不要隨心所欲地拋硬幣。相反,請嘗試使用elif或else:
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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/333845.html
上一篇:將函式作為引數傳入C 時出錯
