#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 выдает любое число из определенного диапазона… и вы можете выполнить некоторый оператор кондиционирования и попробовать другой порядок вычислений. проверьте документацию один раз. 🙂