@antiqous

Что еще можно добавить?

n1 = input("Скажите что нибудь: ")
n2= input("Здравствуйте, это SCUB - Special Custom Unified Bot. Скажите 'help' чтобы посмотреть полный список команд: ")
if n1 == True:
    print (n2)   
while n2 != '':
    if n2 == 'calc +':
        print("Калькулятор на сложение")
        num_1 = int(input("1-е число: "))
        num_2 = int(input("2-е число: "))
        res = num_1 + num_2
        print("Результат:", res)
        n2 = input("Введите команду: ")


    if n2 == 'calc -':
        print("Калькулятор на вычитание")
        num_11 = int(input("1-е число: "))
        num_22 = int(input("2-е число: "))
        res = num_11 - num_22
        print("Результат:", res)
        n2 = input("Введите команду: ")

    if n2 == 'calc *':
        print("Калькулятор на умножение")
        num_111 = int(input("1-е число: "))
        num_222 = int(input("2-е число: "))
        res = num_111 * num_222
        print("Результат:", res)
        n2 = input("Введите команду: ")

    elif n2 == 'calc /':
        print("Калькулятор на деление")
        num_1111 = int(input("1-е число: "))
        num_2222 = int(input("2-е число: "))
        res = num_1111 / num_2222
        print("Результат:", res)
        n2 = input("Введите команду: ")

    elif n2 == 'help':
        print("Полный список команд доступных в SCUB v0.1:")
        print("help")
        print("calc +,-,*,/)")
        n2 = input("Введите команду: ")

    else:
        print('Такой команды нет, попробуйте еще раз')
        n2 = input("Введите команду: ")


Мне пока в голову пришли только калькулятор и список команд, новые команды будут записаны по шаблону:
if/elif n2 == 'команда':
код
# и в конце:
n2 = input("Введите команду: ")


Я не прошу готовых кодов лишь идеи и предложения.

P.S Проект создаётся новичком поэтому я буду рад адекватной критике и советам по улучшению кода.
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
Vindicar
@Vindicar
Мой совет: сделай каждую команду отдельной функцей вида:
# ': str' - это type hint. На выполнение не влияет, оно в первую очередь для читаемости. Можешь пока пропустить.
def command_plus(args: str):  # функция получает аргумент как строку, вместо вызова input().
        "Складывает указанные числа."  # doc-string содержит человекочитаемое описание функции
        print("Калькулятор на сложение")
        parts = [int(part) for part in args.split()]  # операции со строками, list comprehensions
        if not parts:  # какие значения в питоне истинные (truey), какие ложные (falsy)?
                parts.append(int(input("1-е число: ")))
                parts.append(int(input("2-е число: ")))
        res = sum(parts)
        print(f"Результат: {res}")  # f-строки

Далее, научись работать со словарями:
# словарь, содержащий имя команды и её функцию
commands = {
        'calc +': command_plus,
        # тут будут другие команды
}

Тогда рабочий цикл будет примерно таким:
while True:
        cmd = input('Введите команду: ')  # например, "calc + 2 3 5"
        for cmd_name, cmd_func in commands.items():  # цикл for, операции со словарями
                if cmd.startswith(cmd_name):  # операции со строками
                        cmd = cmd[len(cmd_name):]  # срезы (slice)
                        try:  # обработка исключений
                                cmd_func(cmd)
                        except Exception as err:
                                print(f"Произошла ошибка: {err}")
                        break  # операторы передачи управления
        else:  # Как работает оператор else: совместно с циклами?
                if cmd == 'exit':
                        print('До свиданья')
                        break # прерываем while
                else:
                        print(f"Неизвестная команда: {cmd}")

Будет куда проще читать код и расширять функциональность.
Ну и почитай по темам, которые я упомянул в комментариях.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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