Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 6, 2014 20:49:39

Nameless95
Зарегистрирован: 2014-11-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Калькулятор

Помогите с написанием программы:
Напишите калькулятор. При запуске ваша программа должна ожидать ввода пользователем команды (при этом на экран выводить ничего не нужно). Команды могут быть трех типов:

1)Слово “exit”. В этом случае скрипт должен вывести на экран слово “bye” и завершить работу.
2)Три аргумента через пробел – первый операнд (целое число), операция (одна из “+”, “-”, “*”, “/”, “%”, “**”) и второй операнд (целое число). В этом случае нужно произвести указанную операцию над заданными числами и вывести результат на экран. После этого переходим в режим ожидания новой команды.
3)Любая другая команда из одного аргумента или из трех аргументов, но с операцией не из списка. В этом случае нужно вывести на экран слово “error” и завершить работу."
Заранее спасибо за помощь!

Офлайн

#2 Дек. 6, 2014 22:25:16

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Калькулятор

while True:
    s = input("").replace(" ", "")
    [exit("Error") for i in s if i not in list(map(str, range(10)))+['+', '-', '*', '/', '%', '**']]
    print(eval(s))



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Дек. 6, 2014 22:31:57

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Калькулятор

actions = ('+', '-', '*', '/', '%', '**')
while True:
    string = raw_input('')
    args = string.split(' ')
    if string == 'exit':
        print('bye')
        break
    elif len(args) == 3:
        if isinstance(args[0], int) and isinstance(args[2], int) and args[1] in actions:
            print(eval(string))
        else:
            print('error')
            break
    else:
        print('error')
        break
как-то так. проверяйте сами.

Офлайн

#4 Дек. 6, 2014 23:12:24

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Калькулятор

while True:
    e = input().lower() # if python 2.x: e = raw_input().lower()
    if e == 'exit':
        print('bye')
        break
    lst = e.split()
    if len(lst) != 3 or \
        not lst[0].isdigit() or \
        lst[1] not in ['+', '-', '*', '/', '%', '**'] or \
        not lst[2].isdigit():
            print('error')
            break
    try:
        result = eval(e)
    except Exception as err: # if python 2.x: except Exception, err:
        result = err
    print(result)
        

Офлайн

#5 Дек. 6, 2014 23:25:09

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Калькулятор

dimy44

-2 - 3
error



————————————————
-*- Simple is better than complex -*-

Офлайн

#6 Дек. 7, 2014 00:10:09

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Калькулятор

Ну вот, так всегда)), ладно

while True:
    e = input().lower().strip()
    if e == 'exit':
        print('bye')
        break
    lst = e.split()
    try:
        assert len(lst) == 3 and \
            lst[1] in ['+', '-', '*', '/', '%', '**'] and \
            isinstance(eval(lst[0]), int) and \
            isinstance(eval(lst[2]), int)
        print(eval(e))
    except ZeroDivisionError:
        print('Zero division')
    except Exception:
        print('error')
        break

Отредактировано dimy44 (Дек. 7, 2014 00:14:53)

Офлайн

#7 Дек. 7, 2014 00:57:51

alchemist
Зарегистрирован: 2014-11-12
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Калькулятор

dimy44
в Криму что свет есть? А в Одессе виключают
Лучше б всякие пидори сидели в темноте.

Офлайн

#8 Дек. 7, 2014 01:39:57

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Калькулятор

alchemist
dimy44в Криму что свет есть? А в Одессе виключают Лучше б всякие пидори сидели в темноте.
Ну, судя по твоему тону, твое желание как-раз и осуществляется. А в Крыму да, со светом проблем нету.

Офлайн

#9 Дек. 7, 2014 08:11:05

adm1nb3k
Зарегистрирован: 2014-12-06
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Калькулятор

Вообщета ТС не указаль, что программу надо запилит на баше.. Это задача от stepic`а..

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version