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