Цикл while с двойным условием в python
Собственно проблема следующая: когда оставляешь в цикле только одно из условий, все работает без нареканий. Как только добавляешь второе условие, они оба начинают просто игнорироваться, хотя должны соблюдаться вместе. И в тело цикла просто не заходит при любом веденном числе
number = int(input('Введите число: ')) while number >= 10 and number
Отслеживать
задан 22 апр 2020 в 12:07
21 1 1 серебряный знак 2 2 бронзовых знака
А как число может быть одновременно больше 10 и меньше 0?
22 апр 2020 в 12:10
Я просто не нашел другого способа как заставить ввести число от 1 до 9 включительно) Как одновременно исключить ноль, отрицательные числа, 10 и то что больше 10
22 апр 2020 в 12:18
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Очевидно, что число не может быть одновременно больше 10 и меньше 0. Замените and на or .
Предположим, что number равно 15. Тогда имеем следующее:
По таблице истинности True AND False дает False, поэтому в цикл не попадает. То же самое, если число меньше 0.
А вот True OR False как раз дает True и выполнение заходит в цикл.
Отслеживать
ответ дан 22 апр 2020 в 12:10
26.7k 7 7 золотых знаков 32 32 серебряных знака 49 49 бронзовых знаков
Все стало работать) Но честно говоря непонятно почему это работает если именно and делает так, чтобы соблюдались оба условия, а or одно из них
22 апр 2020 в 12:17
Именно потому так и работает. Если and, что number должно быть больше 10 И ОДНОВРЕМЕННО меньше 0. А если or, то больше 10 ИЛИ меньше 0.
22 апр 2020 в 12:19
я немного дополнил объяснение.
22 апр 2020 в 12:44
Для большей понятности можно обратить условие, написав отрицание через not и взяв в скобки верное условие:
while not (number >= 1 and number
Т.е. цикл будет выполняться, пока не выполнилось искомое условие, что число "от 1 до 9 включительно".
P.S. Есть три отрезка, которым может принадлежать проверяемое число:
- Числа < 1
- Числа от 1 до 9
- Числа > 9
Число может принадлежать одному из этих отрезков. Когда вы проверяете число на принадлежность отрезку [1,9] вы можете писать условия через и/and , потому что это один отрезок но когда вы проверяете, что число находится в одном из двух разных отрезков (меньше 1 либо, больше 9) вы не можете использовать и/and , а только или/or - это два разных отрезка, число не может принадлежать сразу и тому отрезку и другому.
Как сделать цикл for с двумя условиями?
Начал изучать js и столкнулся с такой проблемой - цикл for с двумя условиями. То есть надо, чтобы цикл итерировался одновременно с двумя условиями и можно ли при этом использовать "логическое И(&&)?
Суть задачи: x = 15, x12. Надо вывести в консоль x и y.
Знаю, что ничего не выйдет, но нужно именно сама суть for с двумя условиями.
Составил такой код, но не понимаю, почему он не работает:
for (let x=15; x12; y++)
- Вопрос задан более года назад
- 898 просмотров
3 комментария
Простой 3 комментария
Как добавить 2 условия в цикл
Циклы – важный инструмент в программировании, позволяющий многократно выполнять однотипные действия. Однако в некоторых ситуациях может понадобиться добавить не одно, а два условия для выполнения цикла. В данной статье мы рассмотрим, как это сделать и предоставим вам подробное руководство с примерами.
Для добавления двух условий в цикл можно использовать операторы логического И или логического ИЛИ. Оператор логического И (&&) позволяет выполнить цикл только в том случае, если оба условия истинны, а оператор логического ИЛИ (
Как записать несколько условий в цикле for?
Как задать несколько условий в одном цикле
Здравствуйте, подскажите, пожалуйста, кто знает, как задать несколько условий в одном цикле.
Несколько условий в цикле
Не корректно работает счетчик в таком виде: Например при вводе: 95, 92, 92 должно получиться dt=1.
Несколько условий в цикле
Здравствуйте! Помогите сделать проще. Задача следующая: есть папка, в ней находится множество.
Несколько условий в цикле do while
Нужно, чтобы пользователь ввел или 1 или 2: #include <cmath> #include <iostream> #include.
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,881
Записей в блоге: 1
Сообщение от selo4404
как прописать несколько условий в цикле for?
for ( int i {}; true && true; ++i ); // infinite loop
11697 / 6376 / 1724
Регистрация: 18.10.2014
Сообщений: 16,082
Сообщение от selo4404
как прописать несколько условий в цикле for?
Никак. В цикле for допускается только одно условие.
Что вы вообще имеет в виду под "прописать несколько условий"? Зачем?
Регистрация: 15.11.2012
Сообщений: 77
Сообщение от TheCalligrapher
Что вы вообще имеет в виду под "прописать несколько условий"? Зачем?
1) чтобы избавиться от вложенных циклов.
2) чтобы было несколько счётчиков i,j,k (например)
11697 / 6376 / 1724
Регистрация: 18.10.2014
Сообщений: 16,082
Сообщение от selo4404
1) чтобы избавиться от вложенных циклов.
2) чтобы было несколько счётчиков i,j,k (например)
Примеры недостаточно конкретны. Все равно не ясно, о чем именно идет речь.
5504 / 5099 / 1048
Регистрация: 11.10.2019
Сообщений: 13,367
selo4404, можно использовать класс, в котором будет "оператор инкремента", сменяющий состояние экземпляра класса в нужном направлении. Таким образом можно завернуть N вложенных циклов в один.
Однако, производительность сильно пострадает
11697 / 6376 / 1724
Регистрация: 18.10.2014
Сообщений: 16,082
Запихать несколько вложенных циклов в один, при желании, труда не составит
1 2 3 4 5 6 7 8 9
#define N 5 #define M 8 #define L 6 int main() { for (unsigned i = 0, j = 0, k = 0; i N; ++k == L ? k = 0, ++j == M ? j = 0, ++i : 0 : 0) printf("%d %d %d\n", i, j, k); }
Однако для этого не нужно множественных условий.
По прежнему не ясно, о чем идет речь в вопросе ТС и чем ему могут помочь "несколько условий в цикле for".
2852 / 2352 / 711
Регистрация: 29.06.2020
Сообщений: 8,693
Сообщение от selo4404
1) чтобы избавиться от вложенных циклов.
2) чтобы было несколько счётчиков i,j,k (например)
Действительно непонятно. что и зачем.
можно вот такую бредятину написать, проход по двумерному массиву одним циклом
вопрос - зачем ?
1 2 3 4 5 6 7 8 9 10 11 12 13
#include int main() { const int rows=2,cols=3; int arr[rows][cols]={{11,12,13},{21,22,23}}; for (int i=0, j=0; // инициализация irows && jcols; // условие работы цикла ++j, j==cols ? ++i,j=0,std::cout:: endl : std::cout<' ' ) { std::cout[ i][j]; } }
Регистрация: 15.11.2012
Сообщений: 77
Сообщение от SmallEvil
можно вот такую бредятину написать, проход по двумерному массиву одним циклом
вопрос - зачем ?
Бьюсь над "квадратом Паркера" - диагонали, удовлетворяющие условию, нашел, осталось 4 значения подобрать
251 / 184 / 47
Регистрация: 31.01.2021
Сообщений: 934
selo4404, наверное имеет ввиду несколько условий:
for(int i=0, j=10; i10 || j>=0; i++, j--)
11697 / 6376 / 1724
Регистрация: 18.10.2014
Сообщений: 16,082
Сообщение от YUEN HOIFEF
selo4404, наверное имеет ввиду несколько условий:
for(int i=0, j=10; i10 || j>=0; i++, j--)
Но i<10 || j>=0 - это одно условие.10>
251 / 184 / 47
Регистрация: 31.01.2021
Сообщений: 934
Одно из нескольких
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
несколько условий в цикле
Кто знает? Можно ли при объявлении цикла задать что-то типа: for i: = (1 to 20) and (100 to 120).
Несколько условий в цикле for
Имеются строчки кода for j := ACol1 to ACol2 do for i := ARow1 to ARow2 do Если.
Как прописать несколько условий при ИСТИНА и несколько условий при ЛОЖЬ?
Всем доброго времени суток. If & Else как прописать несколько условий при ИСТИНА и несколько.
Записать в List несколько Dictionary в цикле
Всем пт! У меня возникла следующая проблема, надеюсь на Вашу помощь: Мне необходимо записать.
Как сделать несколько условий if?
Как сделать несколько условий if чтобы они совмещались друг с другом, а не работали по отдельности.
Как в while засунуть несколько условий?
как-то так можно?(while ( (<= r2 r1) && (еще одно условие) ) (setq r2 (getreal "Укажите еще раз.
Или воспользуйтесь поиском по форуму: