Задать вопрос
@Cevleron

Счастливый билет. Где ошибка в коде?

a = int(input("Введите номер вашего билета что бы узнать счастливый он или нет: "))
 Блок проверки на количество чисел
count = 0
while (a > 0):
    count += 1
    a = a // 10
print(count)
if count == 6:
    a1 = int(a/100000)
    print(a1)
    a2 = int((float(a/100000) - a1) * 10)
    print(a2)
    a3 = int((float(a/10000) - int(a/10000))*10)
    print(a3)
    a4 = int((float(a/1000) - int(a/1000))*10)
    print(a4)
    a5 = int((float(a/100) - int(a/100))*10)
    print(a5)
    a6 = int((float(a/10) - int(a/10))*10)
    print(a6)
    if (a1 + a2 + a3) == (a4 + a5 + a6):
        print('Счастливый')
    else:
        print('Обычный')
else:
    print("Ввели неверное число")


Не могу понять почему после проверки на количество чисел в веденном числе в блок с формулами входит а=0.
Если закоментировать часть с проверкой программа отлично работает. Помогите плиз разобрать в чем же ошибка.
  • Вопрос задан
  • 1052 просмотра
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
@dmshar
А зачем все так сложно?
Зачем введенную строку преобразовывать в int?
Зачем выделять цифры путем деления на 10?
Зачем так сложно выяснять длину введенного числа?
Зачем столько танцев с бубнами над отдельными цифрами?
Зачем..... ?

Все по сути делается в три строки:

a = input("Введите номер вашего билета что бы узнать счастливый он или нет: ")
if len(a)==6 and a.isdigit():
    la=list(map(int,list(str(a))))
    if sum(la[:3])==sum(la[3:]):
        print('Счастливый')
    else:
        print('Обычный')
else:
    print("Ввели неверное число")

Проверка:
Введите номер вашего билета что бы узнать счастливый он или нет: 123456
Обычный
Введите номер вашего билета что бы узнать счастливый он или нет: 222223
Обычный
Введите номер вашего билета что бы узнать счастливый он или нет: 222222
Счастливый
Введите номер вашего билета что бы узнать счастливый он или нет: 456375
Счастливый
Введите номер вашего билета что бы узнать счастливый он или нет: 196277
Счастливый
Введите номер вашего билета что бы узнать счастливый он или нет: 012345
Обычный
Введите номер вашего билета что бы узнать счастливый он или нет: 000000
Счастливый
Введите номер вашего билета что бы узнать счастливый он или нет: 123.456
Ввели неверное число
Введите номер вашего билета что бы узнать счастливый он или нет: 123.45
Ввели неверное число
Введите номер вашего билета что бы узнать счастливый он или нет: 123Ф56
Ввели неверное число
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Dr_Elvis
@Dr_Elvis Куратор тега Python
В гугле забанен
Счастливый билетик из автобуса? где сумма первых трех цифр должны равняться последним трем?
сложным каким то путем вы пошли.
моя интерпретация:
a = input("Введите номер вашего билета что бы узнать счастливый он или нет: ")
if len(a) != 6:
    print("Ввели неверное число")
    return
if sum([int(x) for x in a[:2]]) == sum([int(x) for x in a[2]]):
    print('Счастливый')
else:
    print('Обычный')
Ответ написан
@Kamur
Добрый день.
В вашей программе переменная а становится равной 0 в этой строке:
a = a // 10.

Предлагаю такой вариант:

a = int(input("Введите номер вашего билета что бы узнать счастливый он или нет: "))

if len(str(a)) != 6:
    print("Ввели неверное число")
else:
    a1 = int(a/100000)
    print(a1)
    a2 = int((float(a/100000) - a1) * 10)
    print(a2)
    a3 = int((float(a/10000) - int(a/10000))*10)
    print(a3)
    a4 = int((float(a/1000) - int(a/1000))*10)
    print(a4)
    a5 = int((float(a/100) - int(a/100))*10)
    print(a5)
    a6 = int((float(a/10) - int(a/10))*10)
    print(a6)

    print(['Обычный', 'Счастливый'][(a1 + a2 + a3) == (a4 + a5 + a6)])
Ответ написан
Комментировать
@Cevleron Автор вопроса
Большое всем спасибо за помощь.
a = int(input("Введите номер вашего билета что бы узнать счастливый он или нет: "))

if len(str(a)) != 6:
    print("Ввели неверное число")
else:
    a1 = int(a/100000)
    print(a1)
    a2 = int((float(a/100000) - a1) * 10)
    print(a2)
    a3 = int((float(a/10000) - int(a/10000))*10)
    print(a3)
    a4 = int((float(a/1000) - int(a/1000))*10)
    print(a4)
    a5 = int((float(a/100) - int(a/100))*10)
    print(a5)
    a6 = int((float(a/10) - int(a/10))*10+1)
    print(a6)
    if (a1 + a2 + a3) == (a4 + a5 + a6):
        print('Счастливый')
    else:
        print('Обычный')

Вот в таком варианте все шикарно заработало
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы