3

Всем привет ,я только начинаю программировать на этом чудесном языке , подскажите,пожалуйста,можно ли объединить оператор if ,чтобы не расписывать как я:

grade = int(input("Введите свою оценку:"))
if grade == 1:
    print("Ужас!")
if grade == 2:
    print("Двоечник!")
if grade == 3:
    print("Троечник!")
if grade == 4:
    print("Хорошист!")

if grade == 5: print("Отличник!") if grade > 5: print("Не может быть!")

  • Хотя не совсем ясно что разумел автор вопроса под "объединить"... – Глеб Oct 21 '23 at 18:20
  • Кратко, варианты: оставить как есть (почему бы и нет? все так делают); если свербит — использовать match case, также есть вариант со словарем. Все это подробно описано в вопросе на который я кинул выше ссылку. – Глеб Oct 21 '23 at 18:22
  • спасибо большое,как раз таки это мне и нужно было!) – Broken Comprehensively Oct 21 '23 at 18:35
  • https://ru.stackoverflow.com/a/460208/209304 лучший ответ по данной теме – Dmitry Oct 21 '23 at 22:28
  • @Глеб вы скинули ссылку на вопрос, который закрыт так же как дубликат. В сообщении о закрытии действительно тот ответ, который надо указать. – Dmitry Oct 21 '23 at 22:30
  • @Dmitry, это я его сам закрыл как дубликат, потому что он похож. switch case немного про другое. Мне показалось, что мой вопрос лучше подходит на эту тему. – Глеб Oct 22 '23 at 04:56
  • @Глеб я это прекрасно вижу, только все ответы к вашему вопросу повторяют один лишь ответ данный в развернутом виде и хорошо написан. – Dmitry Oct 22 '23 at 08:46

3 Answers3

2

Просто с использованием словаря:

grade = int(input("Введите свою оценку:"))

grades = {1: 'Ужас!', 2: 'Двоечник!', 3: 'Троечник!', 4: 'Хорошист!', 5: 'Отличник!'}

if grade in grades: print(grades[grade]) else: print("Не может быть!")

Продолжайте учиться!

1

Тут ифы не нужны:

# Такие башни просто уродливы:
if cond1:
  ...
elif cond2:
  ...
elif cond3:
  ...
else:
  ...

Можно обойтись просто словарем, его ключами может быть все что угодно, что поддается хешированию

grade={2:'двоечник',3:'троечник',4:'хорошист',5:'отличник'}.get(int(input('Ввведите оценку:')),'трансформер') print(f"Вы, батенька, у нас {grade}!")

Можно, например, так:

@>>> def foo():...
@... 
@>>> {foo:42}
{<function foo at 0x7f04f0387b00>: 42}
1

Только для Питона 3.10+: Bы можете использовать структуриованное совпадение образца (structured pattern matching) – команду match:

grade = int(input("Введите свою оценку:"))

match grade: case 1: print("Ужас!") case 2: print("Двоечник!") case 3: print("Троечник!") case 4: print("Хорошист!") case 5: print("Отличник!") case _: print("Не может быть!")

MarianD
  • 17,120