我刚刚开始使用python,我决定从一个简单的程序开始,将一行,两个参数的数学表达式直接解析为答案。例子:4 + 2,3/4,5435 * 3423等。首先,我试图解释方程中的两个变量,然后才开始对其进行数学运算。我的问题是第39,40,42和43行没有在1,3,2和5中修改它们各自的变量。在PyCharm中,它们因关于影子名称超出范围的错误而变灰。if语句中的变量
这是目前几乎上午01点,我没有太大的夜猫子(我永远不会做它作为一个编码笑),所以它可能是一个愚蠢的错误在我的一部分,但为了以防万一......
primeNumber = None
secNumber = None
num11 = 0
buildList = []
finished = False
def interpret(statement):
i = 0
iMax = len(statement)
while True:
if i >= iMax:
break
parse(statement[i])
i = i + 1
def parse(char, buildList=buildList):
interrupt = [" ", "+", "-", "/", "*"]
if char in interrupt:
buildNumber(buildList)
buildList.clear()
elif num11 == 1:
buildNumber(buildList)
buildList.clear()
else:
buildList.append(char)
def isNumber(att):
try:
int(att)
return True
except ValueError:
return False
def buildNumber(finishedList, num11 = num11):
finishedNumber = ''.join(finishedList)
print(finishedNumber)
if num11 == 0:
primeNumber = finishedNumber # <<< line 39
num11 = 1
elif num11 == 1:
secNumber = finishedNumber
finished = True
你应该阅读有关变量范围,局部和全局变量等......错误并不是那么愚蠢,理解错误需要一点思考。 – Julien
你可以发布完整的程序,包括调用你定义的函数吗? –