Почему мои условия не работают внутри цикла for?

#python #loops

#python #циклы

Вопрос:

Задача состоит в том, чтобы получить количество звезд от пользователя, а затем распечатать его в виде обратной пирамиды.

Число должно быть нечетным и от 0 до 11. Он всегда печатает 11 звездочек и игнорирует условия независимо от того, что задано

 stars = int(input("Put the odd number of starsn"))
space = 0
for stars in range(11, 0, -2):
    if stars > 11 and stars < 1 and (stars % 2 != 0):
        print("wrong number")
print(space * " "   stars * '*')
space = space   1
print("")
  

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

1. Как звезды могут быть больше 11 и меньше 1 одновременно?

2. Вы заменяете ввод пользователя значениями из range() .

3. если он меньше 1, он должен напечатать «неправильное число»

4. Это уже гарантировано in range(11, 0 , так зачем это проверять?

5. Но у вас есть and , что означает, что он должен удовлетворять обоим условиям одновременно.

Ответ №1:

Ваш тест не должен быть в цикле, он должен быть сразу после ввода. И вам нужно использовать or , не and , так что это будет успешным, если любая проверка верна. И чтобы запретить четное число, тест модуля должен быть == 0 .

Тогда вам нужно использовать для ввода другую переменную, отличную от переменной итерации цикла, и использовать номер ввода в качестве начальной точки в range() функции, а не жестко запрограммированный 11.

 while True:
    number = int(input("Put the odd number of starsn"))
    if number > 11 or number < 1 or (number % 2 == 0):
        print("wrong number")
    else:
        break

space = 0
for stars in range(number, 0, -2):
    print(space * " "   stars * '*')
    space = space   1
  

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

1. Небольшая корректировка: for space, star in enumerate(range

2. Большое вам спасибо <3 В чем, по вашему мнению, суть моей проблемы? Я только начал

3. Не думать о проблеме четко. Это корень большинства ошибок начинающих программистов.

4. Также часто неправильно понимают логические операторы, потому что в английском языке слова используются по-разному.