Задать вопрос
good_br
@good_br
учусь

Почему при сравнение числа код неправильно работает?

Решаю задачу:
Дано натуральное число. Напишите программу, которая определяет, состоит ли указанное число из одинаковых цифр.

Формат входных данных
На вход программе подается одно натуральное число.

Формат выходных данных
Программа должна вывести «YES» если число состоит из одинаковых цифр и «NO» в противном случае.

Почему не правильно работает данная логика внутри цикла? if (n % 10) == ((n // 10) % 10) :

Мой код, всегда выводит True в цикле, даже при не равных числах, но при этом та же логика работает, без цикла через print:
n = int(input())
flag = True

while n != 0:
    n //= 10
    if (n % 10) == ((n // 10) % 10) :
        flag = True
        n //= 10
    else:
        flag = False
print(flag)


А это работает:
n = int(input())
print((n % 10) == ((n // 10) % 10))
  • Вопрос задан
  • 844 просмотра
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
n=int(input()) #читаем число
digit = n%10 #первая цифра
n//=10 #отбрасываем ее
flag=True #считаем что цифры одинаковые
while n>0:
    d = n%10
    if d!=digit: #если цифра не такая как 1
        flag=False 
        break
    n//=10 #отбрасываем цифру

if flag:
    print('YES')
else:
    print('NO')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Dr_Elvis
@Dr_Elvis Куратор тега Python
В гугле забанен
n = input()
arr = [x for x in n]
arrset = set(arr)
if len(arr) == len(arrset):
    print('NO')
else:
    print('YES')
Ответ написан
Ваш ответ на вопрос

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

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