Zumindest das ist das Meiste, dass ich Sinn machen kann, und ich habe über den Fluss der Ausführung für Stunden verfolgt. Hier ist der relevante Ausschnitt aus dem Code:Python-Funktion scheint nicht nach der Rückkehr zu beenden
def check_list(inputList):
'''checks if list is composed of numbers, and, if so, returns a new list of purely integers'''
VerifiedDataSet = []
for i in inputList:
try:
VerifiedDataSet.append(int(i))
except:
print("Value in", inputList.index(i) + 1, "position isn't a number!")
return "not approved"
return ("approved", VerifiedDataSet)
print("This program will make your data set into a color coded bar graph (eventually)!")
listStatus = "not approved"
while listStatus == "not approved":
dataSet = ["1", "2", "foo"] #for illustration of behavior
result = check_list(dataSet)
listStatus = result[0]
if listStatus == 'approved':
dataSet = result[1]
else:
pass
print("You should not see this.")
Die Idee, die Funktion check_list
Iterierte durch eine eingegebene Liste zu haben war und versuchen, jedes Element in eine ganze Zahl umgewandelt wird. Wenn es eine Ausnahme gäbe, würde sie die Position des Wertes ausgeben, der nicht in eine Ganzzahl umgewandelt werden konnte, und zurückgeben, dass die Liste nicht genehmigt wurde, was 1) die Funktion beenden sollte und 2) die while
-Schleife weitermachen soll .
Nur wenn es keine Ausnahmen gab, sollte der Iterator vollständig sein und die Funktion die Zeichenfolge "approved" (um die while
-Schleife zu beenden) und die neue Liste von ganzen Zahlen zurückgeben. Allerdings, von dem, was ich sammeln kann, ist listStatus
irgendwie irgendwie "genehmigt", wie die letzte print
ausgeführt wird, wenn es nie sein sollte.
Irgendwelche Ideen, was könnte dieses Verhalten verursachen?
Könnte ich erkundigen, warum Sie so weit gehen, um zu vermeiden, dass der 'ValueError' aus der fehlgeschlagenen Konvertierung einfach von' check_list() 'herunterrieselt? – dhke
@dhke Ich nehme an, du deutest an, dass es einen weitaus effizienteren Weg gibt, zu tun, was ich versuche zu tun (und ich würde es nicht bezweifeln). Der Grund dafür ist, dass ich immer noch sehr neu in Python bin und generell programmieren. Ich habe mit Ausnahmen ein wenig gespielt, aber ich denke nicht, dass ich noch weiß, was ich mit ihnen anfangen soll oder wie ich sie zu meinem Vorteil nutzen kann. Bald vielleicht! :) – bream