1

Тема: Ціле число з нулями попереду, або задача на "щасливий квиток"

Доброго дня!

У написанні коду для вирішення задачі на "щасливий квиток" зіткнувся з проблемою: у циклі потрібно перебрати усі можливі значення квитків на певному проміжку, початок і кінець якого ввдодяться користувачем у консоль, а тоді вивести кількість "щасливих" квитків. Проблема власне в тому, що деякі числа можуть мати наступний вигляд: 001234, а отже при перетворенні їх з str на int отримане число буде 1234.
Я ввів переформатування строки на випадок, якщо користувачем буде введено число, довжина якого менше 6 символів:

start = '{:06}'.format(int(tickets[0]))
end = '{:06}'.format(int(tickets[1]))

Вся справа в тому, що тоді дійсне ціле число перетворюється у строку, а при перетворенні назад у ціле число знову втрачає свої нулі на початку (001234 -- 1234).
У циклі range() для початку та кінця можливо задати лише цілі числа, а не строки, тому виникли певні проблеми..
Прикріплюю повний код програми нижче.
Завчасно дякую за будь-які поради!

import sys

tickets = list(sys.argv[1:3])
length = []

start = '{:06}'.format(int(tickets[0]))
end = '{:06}'.format(int(tickets[1]))

line = [int(start), int(end)]

for i in range(line[0], line[1]):

    b = i // 1000
    one = b // 100
    two = b % 11
    three = b % 10
    c = i % 1000
    four = c // 100
    five = c % 11
    six = c % 10

    if one + two + three == four + five + six:
        length.append(i)

print (len(length))

2

Re: Ціле число з нулями попереду, або задача на "щасливий квиток"

як один із варіантів

start = 1
end = 10190
for n in range(start, end):
    s = str(n)
    l = s[-3:]
    r = s[-6:-3]
    if sum([int(x) for x in l]) == sum([int(x) for x in r]):
        print '{:06}'.format(n)
Подякували: mishanya1

3

Re: Ціле число з нулями попереду, або задача на "щасливий квиток"

Дуже Вам вдячний за відповідь!
Трішки адаптував Ваш код під свої потреби (готовий програмний код вкладу нижче, можливо, комусь пригодиться)
Тепер постараюсь розібратись у ньому і візьму собі "на озброєння"  :)
Ще раз дякую!

import sys

tickets = sys.argv[1:3]
length = []

start = tickets[0]
end = tickets[1]

for n in range(int(start), int(end) + 1):
    s = str(n)
    l = s[-3:]
    r = s[-6:-3]
    if sum([int(x) for x in l]) == sum([int(x) for x in r]):
        length.append('{:06}'.format(n))

print len(length)
volodymyrko написав:

як один із варіантів

start = 1
end = 10190
for n in range(start, end):
    s = str(n)
    l = s[-3:]
    r = s[-6:-3]
    if sum([int(x) for x in l]) == sum([int(x) for x in r]):
        print '{:06}'.format(n)

4

Re: Ціле число з нулями попереду, або задача на "щасливий квиток"

ну, можна і таке використати:

n = list(map(int, list(input())))
print('Yes' if sum(n[:3]) == sum(n[3:]) else 'No')
Подякували: koala, mishanya, leofun013

5

Re: Ціле число з нулями попереду, або задача на "щасливий квиток"

Доброго дня і дякую Вам за пораду!
Так, я спробував, і теж вийшов необхідний результат.
Вдячний за ще один варіант розв'язку!  :)

ping написав:

ну, можна і таке використати:

n = list(map(int, list(input())))
print('Yes' if sum(n[:3]) == sum(n[3:]) else 'No')