我正在嘗試制作一個學習二進制的程式。它將按如下方式作業:程式要求我將 0 到 15 之間的十進制轉換為二進制,一旦完成此轉換,十進制數字將被洗掉,并且不得再次出現在下一個問題中。因此,這 16 位數字將在無序中被詢問一次且僅一次。
為此,我隨機生成一個要轉換的數字,然后檢查它是否已被使用,這就是我的問題:我應該在串列中測驗亂數是否已經出現,如果是,則生成一個新的直到它是唯一的,除非我沒有成功,即使它已經存在,也接受該數字并提出問題而不是生成另一個問題。
import random
def conversion(binaire):
if binaire=="0000":
decimal="0"
elif binaire=="0001":
decimal="1"
elif binaire=="0010":
decimal="2"
elif binaire=="0011":
decimal="3"
elif binaire=="0100":
decimal="4"
elif binaire=="0101":
decimal="5"
elif binaire=="0110":
decimal="6"
elif binaire=="0111":
decimal="7"
elif binaire=="1000":
decimal="8"
elif binaire=="1001":
decimal="9"
elif binaire=="1010":
decimal="10"
elif binaire=="1011":
decimal="11"
elif binaire=="1100":
decimal="12"
elif binaire=="1101":
decimal="13"
elif binaire=="1110":
decimal="14"
elif binaire=="1111":
decimal="15"
return decimal
def existe(liste, n):
if n in liste:
return 1
else:
return 0
def apprendre_binaire():
remain = 15
binaire = ["0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"]
binaire_deja_fait = []
remain = 15
print("Début du programme d'entrainement\n")
while remain >=0:
continuer=1
number = random.randint(0,15)
#This part is supposed to test if number is unique or not
while continuer==1 :
test = existe(binaire_deja_fait, number)
if test == 1:
number = random.randint(0,15)
else:
continuer = 0
print("Convertir", number, "en binaire :\n")
answer = input()
if answer == binaire[number]:
print("Juste\n")
else:
print("Faux, seconde chance :\n")
answer = input()
if answer == binaire[number]:
print("Juste\n")
else:
print("Faux, la bonne réponse était", binaire[number], "\n")
add=conversion(binaire[number])
binaire_deja_fait.append(add)
print(binaire_deja_fait)
remain-=1
print("Fin du programme d'entrainement")
apprendre_binaire()
這是一個幫助我學習的專案,我知道它不是最佳的。
uj5u.com熱心網友回復:
問題源于您將字串附加到binaire_deja_fait并詢問它是否包含整數。
您可以通過更改existe為:
def existe(liste, n):
if str(n) in liste:
return 1
else:
return 0
我絕對討厭這個existe功能的存在,壽。代替:
while continuer==1 :
test = existe(binaire_deja_fait, number)
if test == 1:
number = random.randint(0,15)
else:
continuer = 0
我會做 :
while str(number) in binaire_deja_fait:
number = random.randint(0,15)
并洗掉了現有的功能。
另一件事是,一旦所有數字都用完,您的程式就會進入無限回圈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/518388.html
標籤:Python列表
