@destinyheart
Начинающий программист.

Как поместить условный оператор в условный оператор Python?

Суть проблемы в том, что, какое бы значение quest не было, запускается 1 случай. Т.е
first_quest = input("Нужно найти площадь или периметр фигуры? Если площадь, пиши - площадь. Если периметр, пиши - периметр. На выбор - Квадрат, треугольник и прямоугольник! \n")
if first_quest == "площадь" or "Площадь" or "gkjoflm" or "s" or "S" and 'Gkjoflm' :
    quest = input("Площадь чего нужно рассчитать? Треугольник - triangle. Квадрат - square. Прямоугольник - rectangle. \n")
    if quest == "rectangle" or "Rectangle" or "кусефтпду" or "Кусефтпду" or "ghzvjeujkmybr" and "Ghzvjeujkmybr":
        width=int(input("Введи ширину прямоугольника в см. \n"))
        height=int(input("Введи высоту прямоугольника в см. \n"))
        print(rectangle(width, height))


P.s там еще 2+ других вариатнов с square и triangle.
  • Вопрос задан
  • 387 просмотров
Решения вопроса 1
adugin
@adugin Куратор тега Python
mapping = str.maketrans(
    "f,dult`;pbqrkvyjghcnea[wxio]sm'.z",
    "абвгдеёжзийклмнопрстуфхцчшщъыьэюя",
)

calc = {
    'квадрат': {
        'площадь': lambda **kwargs: bottom ** 2,
        'периметр':lambda **kwargs: bottom * 4,
    },
    'прямоугольник': {
        'площадь': lambda **kwargs: bottom * height,
        'периметр':lambda **kwargs: (bottom + height) * 2,        
    },
    'треугольник': {
        'площадь': lambda **kwargs: bottom * height / 2,
    }
}

def ask(question, options=None, expected=str):
    if options:
        question = '{} ({}): '.format(question, '|'.join(options))
    answer = None
    while (options and answer not in options) or (type(answer) is not expected):
        answer = input(question)
        if expected is str:
            answer = answer.lower().translate(mapping)
            candidates = set(option for option in options if option.startswith(answer))
            if len(candidates) == 1:
                answer = candidates.pop()
        else:
            try:
                answer = expected(answer)
            except ValueError:
                pass
    return answer


if __name__ == '__main__':
    
    figure = ask('Какую фигуру необходимо рассчитать?', set(calc))
    parameter = ask('Какой параметр требуется вычислить?', set(calc[figure]))
    bottom = ask('Введите длину основания: ', expected=float)
    if figure == 'квадрат':
        height = bottom
    else:
        height = ask('Введите высоту: ', expected=float)
    
    result = calc[figure][parameter](bottom=bottom, height=height)
    
    print(f'{parameter.title()} {figure}а: {result:.3f}')

59ea75ea69b09708447561.png
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@artem78
quest = input('Какая фигура?')

if quest.lower() in ['прямоугольник', 'rectangle', 'rect', 'ghzvjeujkmybr']:
    print('прямоугольник')
elif quest.lower() in ['треугольник', 'triangle', 'tri', 'nhteujkmybr']:
    print('треугольник')
elif quest.lower() in ['круг', 'circle', 'rheu']:
    print('круг')
else:
    print('неизвестная фигура')
Ответ написан
SelfiAS
@SelfiAS
▬ PYTHON ▬ JUNIOR ▬
Попробуйте как-то так:
if first_quest.lower() in ("площадь", "gkjoflm", "s", "S"):
    ...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы