Я использую цикл 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)
0
user3200392 6 Сен 2016 в 09:50

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
1
Ahsanul Haque 6 Сен 2016 в 07:08

Я думаю, вы запутались между 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:
1
Anonymous 6 Сен 2016 в 07:03