Предмет: Информатика, автор: Шоколадка525

Программирование на Python.
Создайте пж программу простую, с циклом while.
Одинаковые цифры

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

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

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


timkafey: обязательно цикл while?
Шоколадка525: желательно

Ответы

Автор ответа: KnowsUser1
3

Ответ:

--- Python 3.8.3 ---

#1 "Как надо" (С While)

def IsNumberSingledigit(number):

   lastDigit = number % 10

   temp = lastDigit

   flag = True  

   while number > 0:

       lastDigit = number % 10

       if not temp == lastDigit: flag = False  

       temp = lastDigit

       number //= 10

   return flag

def main():

   print(IsNumberSingledigit(int(input())))

   

if __name__ == "__main__":

   main()

#2 Как стоило бы в подобном случае

number = int(input()) #Представляем число как строку

print(True if (len(set(str(number))) == 1) else False)

P.S Приведение сначала к числу а потом обратно к строке нужно для уверенности, что мы работаем именно с числом, а не с "аааааа".

Объяснение:


KnowsUser1: класс set - множество. Как бы список (Но не list!) уникальных элементов какого либо перечисляемого объекта (коим, кстати, так же является string).
timkafey: типо он удаляет повторяющееся числа и тд.
KnowsUser1: ну если очень грубо, то да
KnowsUser1: set(['potato', 'potato', 'potato']) -> {'potato'}
timkafey: а что означает __name__ и тд
KnowsUser1: внутреннее имя скрипта
KnowsUser1: при запуске скрипта как самостоятельной программы __name__ будет иметь значение '__main__'
KnowsUser1: При импорте скрипта она будет содержать имя файла, содержащего импортируемый код
KnowsUser1: Насколько помню
timkafey: спасибо
Автор ответа: timkafey
1

number = list(input())

a = number[0]

b = 1

i = 1

while i != len(number):

   if(a == number[i]):

       b += 1

   i += 1

if(b == len(number)):

   print('YES')

else:

   print('NO')


KnowsUser1: Интересная мысль, но в вашем случае не обязательно было приводить строку к листу. Строки сами по себе являются перечисляемым типом и поддерживают доступ по индексу.
KnowsUser1: ну и вместо счётчика совпадений можно было просто сделать переменную со значением True, которое менять на False при первом же несовпадении. А если в виде функции оформлять, то можно было бы просто на первое же несоответствие возвращать False, а иначе возвращать True после полного прохождения цикла
KnowsUser1: def IsSingleDigit(number:str) -> bool:
a = number[0]
for i in number:
if (i != a): return False
return True
Похожие вопросы
Предмет: Математика, автор: polyzaicka