Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 26, 2022 21:05:17

SpyBorgFly
Зарегистрирован: 2022-12-26
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Как можно исправить код, чтобы он работал всегда?

 def expanded_form(num):
    num = str(num)
    count = 1
    result = []
    for i in range(len(num)):
        result.append(num[i] + ('0' * (len(num) - count)))
        count += 1
    for i in result:
        for x in i:
            if x == '0':
                result.remove(i)
                break
            break
    for i in result:
        i = str(i)
        if i[0] == '0':
            result.remove(i)
    return ' + '.join(result))




Задача такова: нужно вернуть число в развернутом виде . То есть из числа 7304 должно получиться 7300 + 4, из числа 73000004: 70000000 + 3000000 + 4. В 90 из 100 случаев код работает исправно, но иногда выдает случайный 0 или пару нулей, как например в том же числе 73000004 выдаёт 70000000 + 3000000 + 000 + 4, хотя нулей быть не должно. Или в числах по типу 900000000 также выводит некорректно

Отредактировано SpyBorgFly (Дек. 26, 2022 21:08:39)

Офлайн

#2 Дек. 26, 2022 22:19:58

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Как можно исправить код, чтобы он работал всегда?

 print(' + '.join([i + (len(str(args)) - j - 1) * '0' for j, i in enumerate(str(args)) if int(i)]))
зы конечно число не должно начинаться с нуля типа ‘args = 010’



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Дек. 26, 2022 22:41:26)

Офлайн

#3 Дек. 26, 2022 22:59:20

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1378
Репутация: +  123  -
Профиль   Отправить e-mail  

Как можно исправить код, чтобы он работал всегда?

  
def split_num(num):
    l = []
    i = 0
    while num:
        temp = (num % 10) * 10**i
        if temp:
            l.append(temp)
        i += 1
        num //= 10
    return l[::-1]
res = split_num(73000004)
print(' + '.join(str(i) for i in res))

Офлайн

#4 Дек. 27, 2022 00:42:48

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

Как можно исправить код, чтобы он работал всегда?

SpyBorgFly
То есть из числа 7304 должно получиться 7300 + 4, из числа 73000004: 70000000 + 3000000 + 4.
Из 7304 должно получиться 7000 + 300 + 4 ?

SpyBorgFly
но иногда выдает случайный 0 или пару нулей
Ошибка у тебя такая же, как здесь.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version