Вы вызываете f.read(1)
дважды каждую итерацию, один раз в while f.read(1)
и еще раз для print(f.read(1))
.Вы печатаете только второй символ, поэтому вы увидите только половину прочитанных данных.
Если вы хотите увидеть каждый символ напечатанный, позвоните f.read(1)
просто один раз каждая итерация.Сохраните результат в переменной и проверьте ее, затем напечатайте переменную:
char = f.read(1)
while char:
print(char)
char = f.read(1)
Вы можете избежать необходимости присваивать char
перед циклом, если вы использовали while True:
, и прерывать при f.read(1)
не возвращает данные:
while True:
char = f.read(1)
if not char:
break
print(char)
или вы можете использовать функцию iter()
с часовым :
for char in iter(lambda: f.read(1), ''):
print(char)
Если вы хотите прочитать чисел из файла, не используйте f.read(1)
.Просто зациклите файл и разбейте каждую строку на пробел:
with open("18.txt") as f:
for line in f:
print(line.split())
Вы, вероятно, хотите преобразовать текст в целых и создать список grid
списков:
grid = []
with open("18.txt") as f:
for line in f:
values = [int(v) for v in line.split()]
grid.append(values)