Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 2, 2016 00:23:16

rekz
Зарегистрирован: 2016-11-02
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

ХЭЛП!

Сложение в заданной пользователем системе счисления
вводится система счисления (число больше 1, меньше 10)
затем на разных строках два числа
Я сломлен, на словах и на бумаге все понимаю, а как программу написать - не понимаю(
Помогите, пожалуйста!
Буду очень признателен!

Отредактировано rekz (Ноя. 2, 2016 14:32:26)

Офлайн

#2 Ноя. 2, 2016 01:43:33

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

ХЭЛП!

CC = системе счисления?!

В общем случае, для произвольных систем счисления с количеством цифр больше 10, могут использоваться какие угодно символы для обозначения этих чисел (в шестнадцатиричной используются A,B,C ,D , E, F). Поэтому нужны уточнения относительно записи чисел в таких СС.
Но, скорее всего, СС это только {двоичная, восьмиричная, десятичная, шестнадцатиричная}.
По записи числа не всегда можно догадаться в какой СС оно написано 100, например. Поэтому и здесь нужна дополнительная информация.

 #!/usr/bin/env python
# -*- coding: utf-8 -*-
import ast
raw_a = raw_input('Enter value 1:')
raw_b = raw_input('Enter value 2:')
try:
    a = ast.literal_eval(raw_a)
    b = ast.literal_eval(raw_b)
except:
    print('An error has occurred! Check your inputs')
    exit(1)
if 'x' in raw_a:
    print "(hex) Result is ",  hex(a + b)
elif 'o' in raw_a:
    print "(oct) Result is ", oct(a + b)
elif 'b' in raw_a:
    print "(bin) Result is ", bin(a + b)
else:
    print "(dec) Result is ", a + b

Скрипт написан под Python 2, для Python 3.x: raw_input заменить на input, ну и с print работать как с функцией.

Работать будет только для целых чисел. Результат выдается в системе счисления записи первого числа. Второе число может быть в другой СС.

Здесь, конечно, except без указания исключений, что не хорошо, но не помню, какие исключения генерирует ast.literal_eval… что возможно, следует доработать

Пример:
 Enter value 1:0xdeadbeef
Enter value 2:0b00110011
(hex) Result is  0xdeadbf22



Офлайн

#3 Ноя. 2, 2016 04:41:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

ХЭЛП!

  
>>> a = 'ff'
>>> b = 'ab'
>>> 
>>> int(a, 16) + int(b, 16)
426
>>> hex(int(a, 16) + int(b, 16))
'0x1aa'
>>>



Отредактировано py.user.next (Ноя. 2, 2016 04:42:10)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version