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

+701 голосов
5.1m просмотров

Программирование на Python. Создайте пж программу простую, с циклом while.Одинаковые цифрыДано натуральное число. Напишите программу, которая определяет, состоит ли указанное число из одинаковых цифр.Формат входных данных На вход программе подается одно натуральное число.Формат выходных данныхПрограмма должна вывести «YES» если число состоит из одинаковых цифр и «NO» в противном случае.​


Информатика (93 баллов) | 5.1m просмотров
+140

желательно

+182

обязательно цикл while?

Дано ответов: 2
+73 голосов

Ответ:

--- 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 Приведение сначала к числу а потом обратно к строке нужно для уверенности, что мы работаем именно с числом, а не с "аааааа".

Объяснение:

(1.6k баллов)
+152

спасибо

+74

Насколько помню

+184

При импорте скрипта она будет содержать имя файла, содержащего импортируемый код

+188

при запуске скрипта как самостоятельной программы __name__ будет иметь значение '__main__'

+45

внутреннее имя скрипта

+155 голосов

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')

(528 баллов)
+101

def IsSingleDigit(number:str) -> bool:
a = number[0]
for i in number:
if (i != a): return False
return True

+179

ну и вместо счётчика совпадений можно было просто сделать переменную со значением True, которое менять на False при первом же несовпадении. А если в виде функции оформлять, то можно было бы просто на первое же несоответствие возвращать False, а иначе возвращать True после полного прохождения цикла

+131

Интересная мысль, но в вашем случае не обязательно было приводить строку к листу. Строки сами по себе являются перечисляемым типом и поддерживают доступ по индексу.