Я использую цикл while
внутри условия if
/ else
. По какой-то причине при одном условии цикл while не работает. Условие показано в моем коде ниже. В этих условиях я бы предположил, что условие else
должно быть использовано, а weight
и max_speed
должны быть уменьшены до тех пор, пока оба условия while
больше не будут действительными. Что я делаю не так?
weight = 0
max_speed = 15
if weight == 0 and max_speed <= 10:
while weight == 0 and max_speed <= 10:
weight=weight+1
print(weight)
print(max_speed)
else:
while weight != 0 and max_speed > 10:
weight = weight-1
max_speed=max_speed-1
print(weight)
print(max_speed)
2 ответа
Предполагая, что вам нужны ваши weight=0
и max_speed=10
; Вы можете это сделать ->
weight = 0
max_speed = 15
while weight !=0 or max_speed > 10:
if weight>0:
weight = weight-1
else:
weight = weight+1
if max_speed>10:
max_speed=max_speed-1
print("{} {}".format(weight, max_speed))
Ваш вывод выглядит как ->
1 14
0 13
1 12
0 11
1 10
0 10
Я думаю, вы запутались между or
и and
.
and
означает, что выражение будет True
, если оба условия удовлетворяют. Где or
означает, что любое условие удовлетворяет.
Теперь на основе вашего кода:
weight = 0
max_speed = 15
if weight == 0 and max_speed <= 10:
# Goes to else block since max_speed = 15 which is >10
else:
# This while won't be executed since weight = 0
while weight != 0 and max_speed > 10:
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.