我剛剛開始使用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
你可以發佈完整的程序,包括調用你定義的函數嗎? –