Python: Есть ли способ выполнить цикл из нескольких вычислений, игнорируя выходные данные с ошибками?

#python #python-3.x #loops

#python #python-3.x #циклы

Вопрос:

Предположим, у меня есть 3 вычисления в следующей последовательности:

a = 1

b = a 1

c = b 1

Есть ли способ написать цикл, который выполняет все вычисления в приведенном ниже смешанном порядке, игнорирует ошибочную переменную c и возвращается к вычислению c после вычисления b?

a = 1

c = b 1

b = a 1

Комментарии:

1. Можете ли вы показать, что вы уже пробовали?

Ответ №1:

Это очень странный алгоритм, но вот вы где :

 def loop_calculations():
    done = False

    while not done:
        try:
            a = 1
            c = b   1
            done = True
        except UnboundLocalError as e:
            print('caught an error, keep going')
            b = a   1

    print(f"(a={a}, b={b}, c={c})")


if __name__ == "__main__":
    loop_calculations()
  

Комментарии:

1. Могу ли я взорвать ваш разум! print(f"(a={a}, b={b}, c={c})") равно print(f"({a=}, {b=}, {c=})")

Ответ №2:

Вы могли бы установить b в некоторое произвольное значение, которое он никогда не получит, а затем вычислять c только в том случае, если b не является этим значением, то есть оно уже было вычислено.

например:

 a = 1
b = 1000000
while b == 1000000
    if b != 1000000:
        c = b   1
    b = a   1
  

Ответ №3:

используя choice() из модуля random, следуя @mlisthenewcool, смешанному с идеями @Oggy Saud:

 from random import choice

def loop_calculations():
    
    a = 1
    b = a   1
    c = b   1

    # Put all your variables in a list
    list = [a, b, c]

    # Initialize the result
    result = 0

    while list != []:
        try:
            random_variable = choice(list)
        except:
            continue
        else:
            result  = random_variable
            list.remove(random_variable)

    return result

print(loop_calculations())
  

Ответ №4:

ваша информация не так хороша ….. но вы когда-нибудь пробовали функцию random? вы можете попробовать это один раз. random выдает любое число из определенного диапазона… и вы можете выполнить некоторый оператор кондиционирования и попробовать другой порядок вычислений. проверьте документацию один раз. 🙂