Найти - Пользователи
Полная версия: ХЭЛП!
Начало » Python для новичков » ХЭЛП!
1
rekz
Сложение в заданной пользователем системе счисления
вводится система счисления (число больше 1, меньше 10)
затем на разных строках два числа
Я сломлен, на словах и на бумаге все понимаю, а как программу написать - не понимаю(
Помогите, пожалуйста!
Буду очень признателен!
scidam
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



py.user.next
  
>>> a = 'ff'
>>> b = 'ab'
>>> 
>>> int(a, 16) + int(b, 16)
426
>>> hex(int(a, 16) + int(b, 16))
'0x1aa'
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB