Разбить на l oop при появлении ошибки Python - PullRequest
0 голосов
/ 11 апреля 2020

Я хочу, чтобы мои Python l oop (показанные ниже) работали, пока не возникнет ошибка. В другом месте я видел, что вы можете использовать некоторое время True внутри a для l oop, но я не уверен, что вы можете связать это с ошибкой. Произошедшая ошибка будет примерно такой:

Ответы [ 3 ]

0 голосов
/ 11 апреля 2020

Просто воспользуйтесь предложением try and кроме.

x = 0
y = 0

for i in range(100):
    try:
        raidus_class = RadiusNeighborsClassifier(radius=100-i).fit(X_train, y_train)

        new["radius"] = raidus_class.predict(X_test)

        if (sum(new.quality == new.radius) > x):
            x = sum(new.quality == new.radius)
            y = i
        print(i)
    except Exception as e:
        print(e)
        break

print("Sum of correct prediction: ", x)
print("At n-neighbours = ", y)
0 голосов
/ 11 апреля 2020

Это можно сделать, используя исключения в Python

Обратите внимание, что приведенный ниже код останавливается только при обнаружении ошибки ValueError

x = 0
y = 0

for i in range(100):
    try:
        raidus_class = RadiusNeighborsClassifier(radius=100-i).fit(X_train, y_train)

        new["radius"] = raidus_class.predict(X_test)

        if (sum(new.quality == new.radius) > x):
            x = sum(new.quality == new.radius)
            y = i
        print(i)
    except ValueError:
        break

print("Sum of correct prediction: ", x)
print("At n-neighbours = ", y)

Мы можем перехватить любой тип исключения, используя

x = 0
y = 0

for i in range(100):
    try:
        raidus_class = RadiusNeighborsClassifier(radius=100-i).fit(X_train, y_train)

        new["radius"] = raidus_class.predict(X_test)

        if (sum(new.quality == new.radius) > x):
            x = sum(new.quality == new.radius)
            y = i
        print(i)
    except:
        break

print("Sum of correct prediction: ", x)
print("At n-neighbours = ", y)

Внимание! Особенно при использовании jupyter, использование исключений будет игнорировать стоп-изменения или остановки, но это не должно быть проблемой, так как вы включили разрыв в своем утверждении.

0 голосов
/ 11 апреля 2020

Вы должны использовать try и except:

while True :
    try :
        # Your code inside loop
    except :
        break # If error occurred 

Вы можете реализовать это также в for циклах:

for i in range(100) :
    try :
        # Your code inside loop
    except :
        break # If error occurred 
...