Перевести число X в системе счисления s1 в систему счисления s2
Цель: написать универсальную программу, которая решает задачу для любых X, s1 и s2..
Входные данные: Во входных данных вашей программе дается 3 числа: исходное число X, основания систем счисления s1 и s2 (2 ≤ s1, s2 ≤ 10). Число X в десятичной системе счисления не превышает 2 × 109.
Выходные данные: В выходных данных должно находиться одно число, равное числу X в системе счисления s2, или -1, если входные данные некорректны. Мой код:
x, s1, s2 = map(int,input().split())
x = str(x)
x1 = int(x, s1)
if s2 == 10:
print(x1)
else:
s = str(" ")
d = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
v = 0
if x1<0:
x1 = -x1
v = 1
while x1>0:
s = d[x1%s2] + s
x1 = x1//s2
if v == 1:
s = "-" + s
print(s)
Его надо дополнить, чтобы при некорректных данных (например 200, 2, 10) выводилось -1, а не ошибка. Как это сделать?
Ответы (1 шт):
Автор решения: handowl
→ Ссылка
x, s1, s2 = map(int,input().split())
x = str(x)
try:
x1 = int(x, s1)
except ValueError:
print(-1)
else:
if s2 == 10:
print(x1)
else:
s = str(" ")
d = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
v = 0
if x1<0:
x1 = -x1
v = 1
while x1>0:
s = d[x1%s2] + s
x1 = x1//s2
if v == 1:
s = "-" + s
print(s)