Python 无按钮编程计算器(输入整个表达式)
在“我的代码”中,用户输入一个表达式(Python 无按钮编程计算器(输入整个表达式),python,Python,在“我的代码”中,用户输入一个表达式(userExp),然后代码将其拆分为expression\u列表下的字符串。打印结果时,我想加入表达式列表,因此输出显示如下:2+2=4,但当我尝试获得此结果时: print (''.join(expression_list.split(',')[::1]), '=', answer) AttributeError: 'list' object has no attribute 'split' 我如何将它从['3','-','4']=-1更改为
userExp
),然后代码将其拆分为expression\u列表下的字符串。打印结果时,我想加入表达式列表
,因此输出显示如下:2+2=4
,但当我尝试获得此结果时:
print (''.join(expression_list.split(',')[::1]), '=', answer)
AttributeError: 'list' object has no attribute 'split'
我如何将它从['3','-','4']=-1
更改为3-4=-1
import operator
operList = ["+", "/", "%", "//", "**", "-",""," "]
Error1 = "Something is wrong with your equation: there is nothing in it."
Error2 = "Something is wrong with your equation: it does not feel complete."
def printGreeting():
print("Hello, welcome to Equation Calculator")
print("Enter in the expression that you want evaluated and the program will do the rest.")
def getExpression():
userExp = input("Enter mathematical expression here: ")
expression_list = userExp.split()
print(expression_list)
if not userExp.isdigit() or userExp.isalpha():
print(Error2)
if operList[6] or operList[7] in userExp:
print(Error1)
return expression_list
def add(expression_list):
answer = int(expression_list[0]) + int(expression_list[2])
return answer
def sub(expression_list):
answer = int(expression_list[0]) - int(expression_list[2])
return answer
def exp(expression_list):
answer = int(expression_list[0]) ** int(expression_list[2])
return answer
def div(expression_list):
answer = int(expression_list[0]) / int(expression_list[2])
return answer
def fdiv(expression_list):
answer = int(expression_list[0]) // int(expression_list[2])
return answer
def modu(expression_list):
answer = int(expression_list[0]) % int(expression_list[2])
return answer
printGreeting()
expression_list = getExpression()
if operList[0] in expression_list:
answer = add(expression_list)
print (answer)
elif operList[5] in expression_list:
answer = sub(expression_list)
print (''.join(expression_list.split(',')[::1]), '=', answer)
elif operList[4] in expression_list:
answer = exp(expression_list)
print (answer)
elif operList[1] in expression_list:
answer = div(expression_list)
print (answer)
elif operList[3] in expression_list:
answer = fdiv(expression_list)
print (answer)
elif operList[2] in expression_list:
answer = modu(expression_list)
print (answer)
如果表达式是用数字和运算符之间的空格输入的,并且它是一个仅使用两个值的简单计算,则可以尝试以下操作,其中输入的表达式被拆分为一个列表并传递到add函数(如果它包含+符号)然后add函数将这两个值相加,将答案返回到调用函数的位置
import operator
operList = ["+", "/", "%", "//", "**", "-",""," "]
Error1 = "Something is wrong with your equation: there is nothing in it."
Error2 = "Something is wrong with your equation: it does not feel complete."
def printGreeting():
print("Hello, welcome to Equation Calculator")
print("Enter in the expression that you want evaluated and the program will do the rest.")
def getExpression():
userExp = input("Enter mathematical expression here: ")
expression_list = userExp.split()
print(expression_list)
if not userExp.isdigit() or userExp.isalpha():
print(Error2)
if operList[6] or operList[7] in userExp:
print(Error1)
if operList[0] in expression_list:
answer = add(expression_list)
print (answer)
#carry on ifs for calc.
def add(expression_list):
answer = int(expression_list[0]) + int(expression_list[2])
return answer
#add functions for each calc like above
printGreeting()
userExp = getExpression()
导致错误的直接问题是,表达式\u list已经是一个列表而不是字符串,因此对其调用split没有意义
但是,如果您删除该问题,那么您将尝试将列表与两个字符串连接起来。您应该加入列表,然后将结果字符串与其他字符串一起加入,或者将它们添加到列表中。比如:
''.join(expression_list+['=', answer])
其他人正在处理你是否以明智的方式进行这项任务——这纯粹是回答你遇到的具体问题 你能不能eval(userExp)
?或者这是作弊?你会支持这个计划吗?你会支持吗?它比看起来更复杂,例如,你需要考虑优先级和括号。我想看看。或者,如果你想为教育目的实现整个事情,考虑一下。最后,Python模块可能会有所帮助。