Removing trailing whitespace, renaming variables, reordering the code to group statements about the same concepts and introducing temporary variable to avoid writing and computing the same expressions multiple times and adding comments:
def repeat_num_and_missing_num(array):
""" Return the value of repeated number and missing number in the given array
using the standard formulaes of Sum of n Natural numbers and sum of squares of n Natural Numbers"""
sum_of_num = 0
sum_of_squares = 0
for num in array:
sum_of_num += num
sum_of_squares += num*num
x = len(array)
sum_of_num_expected = (x * (x+1)) / 2
sum_of_squares_expected = ((x) * (x+1) * (2*x+1)) / 6
# Assuming A is present twice and B is missing:
b_minus_a =# sum_of_num_expectedB - sum_of_numA
b_minus_a = sum_of_num_expected - sum_of_num
# B^2 - A^2 #= (B - A) * (B+A)
sum_square_diffb2_minus_a2 = sum_of_squares_expected - sum_of_squares
# (B - A) *# (B + A)
b_plus_a = sum_square_diffb2_minus_a2 / b_minus_a # B + A
a = (b_plus_a - b_minus_a) / 2
b = (b_plus_a + b_minus_a) / 2
return a, b