print("Введите двоичное число, отделив запятой дробную часть от целой:"
x = str(input())
print("Введите основание СС, в которую требуется перевести число:"
b = int(input())
a = x.split(","
a1 = int(a[0], 2) # Целая часть
k = len(a[1]) if len(a) > 1 else 0 # Дробная часть
if b == 8:
y1 = oct(a1)
while k % 3 != 0:
a[1] += "0"
k = len(a[1])
a2 = int(a[1], 2) if k > 0 else 0 # Если дробной части нет
y2 = oct(a2)
print(x + " (2) = ", y1[2:], ", ", y2[2:], " (8)"
elif b == 16:
y1 = hex(a1)
while k % 4 != 0:
a[1] += "0"
k = len(a[1])
a2 = int(a[1], 2) if k > 0 else 0
y2 = hex(a2)
print(x + " (2) = ", y1[2:], ", ", y2[2:], " (16)"
else:
print("Неверный ввод основания"
Вот исправленный print("введите двоичное число, отделив запятой дробную часть от целой"
x = str(input())
print("введите основание СС, в которую требуется перевести число"
b = int(input())
# Исправлено: правильное название метода split
a = x.split(","
a1 = int(a[0], 2)
k = len(a[1]) if len(a) > 1 else 0 # Проверяем, есть ли дробная часть
if b == 8:
y1 = oct(a1)
while k % 3 != 0 and k > 0: # Убедимся, что k больше 0
a[1] += "0"
k = len(a[1])
a2 = int(a[1], 2) if k > 0 else 0 # Проверяем, есть ли дробная часть
y2 = oct(a2) if k > 0 else "0"
print(x + " (2)= ", y1[2:], ",", y2[2:], " (8)"
elif b == 16:
y1 = hex(a1)
while k % 4 != 0 and k > 0: # Убедимся, что k больше 0
a[1] += "0"
k = len(a[1])
a2 = int(a[1], 2) if k > 0 else 0 # Проверяем, есть ли дробная часть
y2 = hex(a2) if k > 0 else "0"
print(x + " (2)=", y1[2:], ",", y2[2:], "(16)"