Python

Python# Можно помощь с задачей на Python

Задача 7. Годы

Недавно Костя прочитал какую-то научно-фантастическую книжку, где самые страшные события случались только в определённые годы, а именно когда в году были ровно три одинаковые цифры. Косте стало интересно, какие годы были или будут «особенными» в определённом промежутке.

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

Пример:

Введите первый год: 1900

Введите второй год: 2100

Годы от 1900 до 2100 с тремя одинаковыми цифрами:

1911

1999

2000

2022
_________
Aleks Sokolow
Aleks Sokolow
72
вроде чет накостылял

start = int(input('первый год: '))
stop = int(input('второй год: '))
answer = []
for number in range(start, stop + 1):
    str_number = str(number)
    set_str_number = set(str_number)
    for digit in set_str_number:
        if str_number.count(digit) > 2:
            answer.append(number)
print(f'Годы от {start} до {stop} с тремя одинаковыми цифрами:')
print(*answer, sep='\n')
ОМ
Олег Мухин
12 881
Лучший ответ
true_year = ''


for year in range(1900, 2100):
for symbol in str(year):
if str(year).count(symbol) >= 3:
true_year += str(year)
true_year += '\n'
break


print(true_year)
year_a = int(input('Введите первый год: '))
year_b = int(input('Введите второй год: '))
print(f'Годы от {year_a} до {year_b} с тремя одинаковыми цифрами: ')

def years(a,b):
for year in range(a, b + 1):
for i in str(year):
if str(year).count(i) >= 3:
print(year)
break

years(year_a, year_b)
# TODO здесь писать код
years = int(input("Введите первый год:"))
years2 = int(input("введите второй год"))
print("Года от,", years, "до", years2, "тремя одинаковыми цифрами")
for i in range(years,years2+1):
****a,b,c,d = i // 1000, i // 100 % 10, i // 10 % 10, i % 10
****if a == b == c or b == c == d or c == d == a or a == b == d:
********print(a * 1000 + b * 100 + c * 10 + d)
def same(x, y):
count = 1
string_1 = ''
string_2 = ''
for year in range(x, y + 1):
for number in str(year):
if number in string_1:
count += 1
string_2 += number
if count == 3:
if string_1 != string_2 and int(string_2) % 11 == 0:
print(year)
else:
string_1 += number
string_1 = ''
string_2 = ''
count = 1

same(1900, 2100)

1911
1999
2000
2022
def relevant_years(first_year, second_year):
if second_year <= first_year or len(str(first_year)) != 4 or len(str(second_year)) != 4:
print('Ошибка')
else:
print('Года от', first_year, 'до', second_year, 'с тремя одинаковыми цифрами:')
year_1 = 0
for year in range(first_year, second_year+1):
year_1 = year
first_num = year_1 % 10
year_1 //= 10
second_num = year_1 % 10
year_1 //= 10
third_num = year_1 % 10
year_1 //= 10
fourth_num = year_1 % 10
year_1 //= 10
if (first_num == second_num == third_num) or (first_num == second_num == fourth_num) or (second_num == third_num == fourth_num) or (third_num == fourth_num == first_num):
print(year)

first_year = int(input('Введите первый год: '))
second_year = int(input('Введите второй год: '))
relevant_years(first_year, second_year)
Евгений Шуляк Работает только на последней цифре. А нужно всё перебрать.
Евгений Шуляк В сущности идея верная с теми инструментами что есть (бред сивой кобыли откровенно говоря, всё одно что требовать пробежать 100 км не используя руки и ноги)
Евгений Шуляк Извиняюсь. Неправильно отступ поставил. Вижу теперь что правильно. Голова уже опухла от попыток решить эту задачу через костыли. Хотя есть нормальные инструменты но которые ещё пока не дали.