Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2020, 12:05   #1
smi
Пользователь
 
Регистрация: 25.04.2019
Сообщений: 22
По умолчанию перевод числа в двоичную систему счисления. Почему не работает?

Задание:
Напиши программу, которая получает на вход в единственной строке целое десятичное число и осуществляет перевод этого числа в двоичную систему счисления.


Тестирующая система не приняла:
Код:
n = int(input())
b = ''
while n > 0:
    b = str(n % 2) + b
    n = n // 2
print(b)

а вот это приняла:
Код:
n = int(input())
b = bin(n)
b1 = b[2::]
print(b1)
По мне, так последнее - это танцы с бубном, которые никому не нужны.
Содержания тестов не знаю, выяснить возможности нет. Подскажите, почему первый код мог не пройти?
smi вне форума Ответить с цитированием
Старый 11.06.2020, 13:22   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Результат работы этих программ будет различаться для нуля и отрицательных целых чисел. Скорее всего в тестирующей системе не прошел тест с нулем. Так как для отрицательных чисел обе программы выдадут неверный ответ.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 11.06.2020, 18:51   #3
smi
Пользователь
 
Регистрация: 25.04.2019
Сообщений: 22
По умолчанию

BDA, Хм, а тогда как быть? У меня принцип решения неверен?
smi вне форума Ответить с цитированием
Старый 11.06.2020, 20:28   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Принцип верный, просто предусмотреть вывод для нуля:
Код:
n = int(input())
if n == 0:
    print(0)
else:
    b = ''
    while n > 0:
        b = str(n % 2) + b
        n = n // 2
    print(b)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод вещественных чисел в двоичную систему счисления - C (Си) NoRestForTheWicked Помощь студентам 0 02.01.2018 12:30
Перевод в двоичную систему счисления _Лето_ Общие вопросы C/C++ 4 24.11.2013 12:45
Перевод из десятеричной в двоичную систему счисления idShura Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 13 13.06.2012 19:39