简体   繁体   中英

Why "None" word is printed in python code

I've tried Simple Python Calculator with Maintaining past history with it. The word "None" is getting printed after each calculations. How to remove that "None" word from my code

Here is my code for python calculator!!

calculations = []
def record_history(args):
    calculations.append(args)

def history():
    if calculations == []:
        print("No past calculations to show")
    else:
        for i in calculations:
            print(i)
def add(a,b):
  return a+b
  
def subtract(a,b):
  return a-b
  
def multiply (a,b):
  return a *b

def divide(a,b):
  try:
    return a/b
  except Exception as e:
    print(e)

def power(a,b):
  return a**b
  
def remainder(a,b):
  return a % b
  
def select_op(choice):
  if choice == '#':
    return -1
  elif (choice == '$'):
    return 0
  elif (choice in ('+','-','*','/','^','%')):
    while (True):
      num1s = (input("Enter first number: "))
      print(num1s)
      if num1s.endswith('$'):
        return 0
      if num1s.endswith('#'):
        return -1
        
      try:
        num1 = float(num1s)
        break
      except:
        print("Not a valid number,please enter again")
        continue
    
    while (True):
      num2s = str(input("Enter second number: "))
      print(num2s)
      if num2s.endswith('$'):
        return 0
      if num2s.endswith('#'):
        return -1
      try:  
        num2 = float(num2s)
        break
      except:
        print("Not a valid number,please enter again")
        continue
    
    
    last_calculation = ""
    
    if choice == '+':
      result = add(num1, num2)
    elif choice == '-':
      result = subtract(num1, num2)
    elif choice == '*':
      result = multiply(num1, num2)
    elif choice == '/':
      result =  divide(num1, num2)
    elif choice == '^':
      result = power(num1, num2)
    elif choice == '%':
      result = remainder(num1, num2)
    else:
      print("Something Went Wrong")
      
    last_calculation =  "{0} {1} {2} = {3}".format(num1, choice, num2, result) 
    print((last_calculation ))
    print((record_history(last_calculation)))
    
  elif choice == "?":
      history()
        
  else:
      print("Unrecognized operation")
        
while True:
  print("Select operation.")
  print("1.Add      : + ")
  print("2.Subtract : - ")
  print("3.Multiply : * ")
  print("4.Divide   : / ")
  print("5.Power    : ^ ")
  print("6.Remainder: % ")
  print("7.Terminate: # ")
  print("8.Reset    : $ ")
  print("8.History  : ? ")
  
  # take input from the user
  choice = input("Enter choice(+,-,*,/,^,%,#,$,?): ")
  print(choice)
  if(select_op(choice) == -1):
    #program ends here
    print("Done. Terminating")
    exit()

The output is,

Select operation.
1.Add      : +
2.Subtract : -
3.Multiply : *
4.Divide   : /
5.Power    : ^
6.Remainder: %
7.Terminate: #
8.Reset    : $
8.History  : ?
Enter choice(+,-,*,/,^,%,#,$,?): ?
No past calculations to show
Select operation.
1.Add      : +
2.Subtract : -
3.Multiply : *
4.Divide   : /
5.Power    : ^
6.Remainder: %
7.Terminate: #
8.Reset    : $
8.History  : ?
Enter choice(+,-,*,/,^,%,#,$,?): -
Enter first number: 2
Enter second number: 3
2.0 - 3.0 = -1.0
None
Select operation.
1.Add      : +
2.Subtract : -
3.Multiply : *
4.Divide   : /
5.Power    : ^
6.Remainder: %
7.Terminate: #
8.Reset    : $
8.History  : ?
Enter choice(+,-,*,/,^,%,#,$,?): ?
2.0 - 3.0 = -1.0
Select operation.
1.Add      : +
2.Subtract : -
3.Multiply : *
4.Divide   : /
5.Power    : ^
6.Remainder: %
7.Terminate: #
8.Reset    : $
8.History  : ?
Enter choice(+,-,*,/,^,%,#,$,?): #
Done. Terminating

How to Remove the extra None...

The problem is here:

print((record_history(last_calculation)))

The functoin record_history doesn't return a value, so it implicitly returns None . Instead of trying to print the result of the call (ie, None ), just call it by replacing the above with:

record_history(last_calculation)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM