Вывод последовательности (Collatz) в Display и в виде текстового файла - PullRequest
0 голосов
/ 10 ноября 2019

Следующий фрагмент дает мне список с разделителями-запятыми на дисплее:

X = 19     # Start
N = 7      # Length
def f(x, n):
    yield x
    for k in range(0, n):
        if x % 2 == 0:
            x = x / 2
        else:
            x = 3*x + 1
        yield x
print(", ".join(map(str, f(X, N))))
f = file('collatz\N.txt','w')  # gives an empty file and is not named correctly
# f.write(str(f(X,N))  Does not work

Как мне получить этот с разделением строк (как по умолчанию) как хороший именованный текстовый файл, например collatz19.txt?

Так что вывод на дисплей в порядке. Мне нужен вывод textfile _too_, и я не знаю команд.

1 Ответ

1 голос
/ 10 ноября 2019

У вас есть два варианта записи в файл:

# Write the whole file in one string
with open('collatz\N.txt','w') as fn:
    one_string = "\n".join(map(str, f(X, N)))
    fn.write(one_string + '\n')

или запись в файл строки за раз:

with open(r'collatz\Ng.txt','w') as fn:
    gen = f(X, N)
    for line in gen:
        fn.write(str(line)+'\n')
...