To, czego szukam, to najlepszy sposób na powiedzenie: "Jeśli ta lista jest zbyt krótka, wydłuż ją do 9 elementów i dodaj" Wybór 4 "," Wybór 5 ", itp., jako dodatkowe elementy. Również zamień elementy "Brak" na "Wybór x". " Można też zastąpić "" i 0.Pythonowy sposób na rozszerzenie potencjalnie niekompletnej listy
Przykładem transformacja byłaby
['a','b',None,'c']
do
['a','b','Choice 3','c','Choice 5','Choice 6','Choice 7','Choice 8','Choice 9']
Mój początkowy kod nadużywane try/z wyjątkiem i miał błąd off-by-one nie zauważyłem; dzięki joeforkerowi i wszystkim, którzy to wskazali. Na podstawie uwag Próbowałem dwa krótkie rozwiązania sprawdzające się równie dobrze:
def extendChoices(cList):
for i in range(0,9):
try:
if cList[i] is None:
cList[i] = "Choice %d"%(i+1)
except IndexError:
cList.append("Choice %d"%(i+1)
i
def extendChoices(cList):
# Fill in any blank entries
for i, v in enumerate(cList):
cList[i] = v or "Choice %s" % (i+1)
# Extend the list to 9 choices
for j in range(len(cList)+1, 10):
cList.append("Choice %s" % (j))
myślę # 2 wygranych jako bardziej pythonic, więc jest to jeden użyję. Łatwo jest zrozumieć i używa wspólnych konstrukcji. Dzielenie kroków jest logiczne i ułatwi zrozumienie na pierwszy rzut oka.
Kiedy to odpowiedzieć, nie popełnia błąd numeracji od wyboru 0! – joeforker
Jeśli wybrano pusty ciąg znaków "" lub 0, czy chcesz go pokazać użytkownikowi, czy też chcesz go traktować tak samo jak None? – joeforker