File50. Даны два файла вещественных чисел с именами S1 и S2, элементы которых упорядочены по возрастанию. Объединить эти файлы в новый файл с именем S3 так, чтобы его элементы также оказались упорядоченными по возрастанию.

Решение на Python 3:

# -*- coding: utf-8 -*-
import random
import sys

def GenerateNumbers(fname):
N = random.randrange(1,5)
numbers = random.sample(range(1, 100), N)
numbers.sort()
print(numbers)
try:
f = open(fname, "w")
for x in numbers:
line = str(x)+"\n"
f.write(line)
f.close()
except:
print("Error: ", sys.exc_info()[0])

try:
file1 = "file50_1.txt"
file2 = "file50_2.txt"
f_output = "file50_all.txt"

GenerateNumbers(file1)
GenerateNumbers(file2)

with open(file1, 'r') as f1, \
open(file2, 'r') as f2, \
open(f_output, 'w') as f_out:

line1 = f1.readline()
x1 = int(line1)
line2 = f2.readline()
x2 = int(line2)

print("while start")
while True:
if x1 < x2:
print("x1 < x2")
f_out.write(line1)
line1 = f1.readline()
if line1:
x1 = int(line1)
else:
f_out.write(line2)
break
else:
print("x1 >= x2")
f_out.write(line2)
line2 = f2.readline()
if line2:
x2 = int(line2)
else:
f_out.write(line1)
break
print("while end")

if line1:
while line1:
line1 = f1.readline()
if line1:
f_out.write(line1)

if line2:
while line2:
line2 = f2.readline()
if line2:
f_out.write(line2)

except Exception as e:
print("Error: ", sys.exc_info())
exc_type, exc_obj, exc_tb = sys.exc_info()
print(exc_type, exc_tb.tb_lineno)