Как исправить ошибку "TypeError: not all arguments converted during string formatting" в 21 строке?
import time
max_buffer_len = 100 # максимальный размер рабочего буфера
buffer_len = 1 # размер буфера чтения
work_buffer = "" # рабочий буфер
try:
start = time.time() # запускаем таймер
with open('text.txt', 'r') as file: # открываем файл
print("\n-----Результат работы программы-----\n -----Локальное время", time.ctime(), "-----")
buffer = file.read(buffer_len) # читаем первый блок
if not buffer: # если файл пустой
print("\nФайл text.txt в директории проекта пустой.\nДобавьте не пустой файл в директорию или переименуйте существующий *.txt файл.")
while buffer: # пока файл не пустой
while (buffer < '0' or buffer > '9') and buffer: # ищем цифры
buffer = file.read(buffer_len) # читаем очередной блок
while (buffer >= '0' and buffer <= '9') and buffer: # обрабатываем цифры
if buffer % 2 == 0: # находим четное число
if len(set(list(buffer))) == len(buffer): # проверяем нет ли в буфере повторяющихся цифр
work_buffer += buffer
else:
work_buffer += ''.join(sorted(set(list(buffer)), key=buffer.index)) # убираем повторяющиеся цифры из числа
work_buffer += ' '
finish = time.time()
result = finish - start # отключаем таймер
print(work_buffer, "Program time: " + str(result) + " seconds.")
except FileNotFoundError:
print("\nФайл text.txt в директории проекта не обнаружен.\nДобавьте файл в директорию или переименуйте существующий *.txt файл.")
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
while (buffer >= '0' and buffer <= '9') and buffer:
if buffer % 2 == 0:
В buffer у вас строка, её нужно сначала преобразовать в число, прежде чем проверять на чётность. Сейчас % питоном воспринимается как старый способ форматирования строки и он не срабатывает, потому что строка и аргументы форматирования не подходят друг другу. Можете в число прямо в условии преобразовать:
if int(buffer) % 2 == 0: