I made some changes. Is there anything else I have missed that could be considered bad practice?
Main
def main():
#Operators are +,-,*,/
#Special operator are c and esc
calculator()
Calculator
def calculator():
num1 = 0 #Resets calulator.
clear = True #Checks if calculator is cleared
while True:
try:
print("Last result: ",num1)
#Number 1 input.
if clear == True:
num1= float(input("First Number: "))
#Operator input.
#Checks for input of special operators 'c', 'sqrt', and 'esc'.
operator=input("Operator: ").lower()
if bool(re.search('^(?=.*[0-9]$)', operator)) == True: #Check if operator contains a number
raise ValueError(" Operator must be +,-,*,/,sqrt, or c") #Throw error if operator is a number.
elif operator == "c":
num1 = 0
clear = True
print("Calculator cleared")
elif operator=="sqrt":
num1=(sqrt(num1))
print("result: ",num1)
continue
elif operator=="esc":
sys.exit(0)
#Number 2 input.
if operator == "c":
pass
else:
num2= float(input("Second Number: "))
#Operator calls.
if operator=="+":
num1= add(num1,num2)
clear = False
elif operator=="-":
num1= sub(num1,num2)
clear = False
elif operator=="*":
num1= mult(num1,num2)
clear = False
elif operator=="/":
num1= div(num1,num2)
clear = False
#Copy num1 to System's clipboard and display the num1.
copy2clip(str(num1))
print("=======================")
print("result: ",num1)
print("copied to clipboard")
print("=======================")
#Catch any errors and reset calculator
except ValueError as error:
print("=======================")
print("Error: ",repr(error))
pass