问题- 这个智能计算器也适用于文本语句。用户不必总是提供代数表达式。它从命令(由用户给出)中提取单词,然后制定表达式。
例子:
Input : Hi calculator plz find the lcm of 4 and 8.
Output : 8
Input : Hi smart plz find the multiplication of 3 and 9.
Output : 27
Input : Hi smart plz end the program.
Output : Thanks for enjoy with me.
代码:用于智能计算的Python代码
# main python proghram
response=['Welcome to smart calculator','My name is MONTY',
'Thanks for enjoy with me ','Sorry ,this is beyond my ability']
# fetching tokens from the text command
def extract_from_text(text):
l=[]
for t in text.split(' '):
try:
l.append(float(t))
except ValueError:
pass
return l
# calculating LCM
def lcm(a,b):
L=a if a>b else b
while L<=a*b:
if L%a==0 and L%b==0:
return L
L+=1
# calculating HCF
def hcf(a,b):
H=a if a=1:
if a%H==0 and b%H==0:
return H
H-=1
# Addition
def add(a,b):
return a+b
# Subtraction
def sub(a,b):
return a-b
# Multiplication
def mul(a,b):
return a*b
# Division
def div(a,b):
return a/b
# Remainder
def mod(a,b):
return a%b
# Response to command
# printing - "Thanks for enjoy with me" on exit
def end():
print(response[2])
input('press enter key to exit')
exit()
def myname():
print(response[1])
def sorry():
print(response[3])
# Operations - performed on the basis of text tokens
operations={'ADD':add,'PLUS':add,'SUM':add,'ADDITION':add,
'SUB':sub,'SUBTRACT':sub, 'MINUS':sub,
'DIFFERENCE':sub,'LCM':lcm,'HCF':hcf,
'PRODUCT':mul, 'MULTIPLY':mul,'MULTIPLICATION':mul,
'DIVISION':div,'MOD':mod,'REMAINDER'
:mod,'MODULAS':mod}
# commands
commands={'NAME':myname,'EXIT':end,'END':end,'CLOSE':end}
print('--------------'+response[0]+'------------')
print('--------------'+response[1]+'--------------------')
while True:
print()
text=input('enter your queries: ')
for word in text.split(' '):
if word.upper() in operations.keys():
try:
l = extract_from_text(text)
r = operations[word.upper()] (l[0],l[1])
print(r)
except:
print('something went wrong going plz enter again !!')
finally:
break
elif word.upper() in commands.keys():
commands[word.upper()]()
break
else:
sorry()
输出:
--------------Welcome to smart calculator------------
--------------My name is MONTY--------------------
enter your queries: tell me the hcf of 4 and 8
4.0
enter your queries: hi plz tell me 7 + 8
Sorry ,this is beyond my ability
enter your queries: pls add 7 and 8
15.0