如何定义变量"counter"以正确执行我的计算器程序?



我很抱歉问一个非常简单的问题,但是我需要解决它才能正确执行我的个人Python代码。

下面的代码是一个计算器,可以计算加减乘除法并保存过去 10 次计算中的所有结果,如果计算次数超过 10 次,则再次保存到第一个计算中。

但是当我运行此代码时,错误NameError: name 'counter' is not defined出现。

我希望任何解决方案都能解决此定义变量,因为即使我正在定义"计数器",也会发生此错误。

def setup():
answer0 = 0
answer1 = 0
answer2 = 0
answer3 = 0
answer4 = 0
answer5 = 0
answer6 = 0
answer7 = 0
answer8 = 0
answer9 = 0
counter = 1

return answer0, answer1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, counter
def decideprocess():
global decision
decision = str(input("Enter + for adding, - for subtracting, * for multiply, / for deviding, and 'all' for see what all calculation results so far. :"))
return decision
def processes(decision, counter):
decision = decideprocess()
if decision == "+":
addition(counter)
decideprocess()
return counter
elif decision == "-":
subtraction(counter)
decideprocess()
return counter
elif decision == "*":
multiplecation(counter)
decideprocess()
return counter
elif decision == "/":
devision(counter)
decideprocess()
return counter
elif decision == "all":
print(answer0)
print(answer1)
print(answer2)
print(answer3)
print(answer4)
print(answer5)
print(answer6)
print(answer7)
print(answer8)
print(answer9)
decideprocess()
return answe1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10, counter, decision, result
def addition(counter):
a = float(input("Enter any number. :"))
b = float(input("Enter any number. :"))
result = a + b
print(result)
counter = counter + 1
assignment(answe1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10, counter, result)

return counter ,result
def subtraction(counter):
a = float(input("Enter any number. :"))
b = float(input("Enter any number. :"))
result = a - b
print(result)
counter = counter + 1
assignment(answe1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10, counter, result)

return counter ,result
def multiplecation(counter):
a = float(input("Enter any number. :"))
b = float(input("Enter any number. :"))
result = a * b
print(result)
counter = counter + 1
assignment(answe1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10, counter, result)

return counter ,result
def devision(counter):
a = float(input("Enter any number. :"))
b = float(input("Enter any number. :"))
result = a / b
print(result)
counter = counter + 1
assignment(answe1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10, counter, result)

return counter ,result
def assignment(answe1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10, counter, result):
while counter < 10:
assignmentanswer(counter, result)
if counter >= 10:
changecountervalue(counter)
assignmentanswerover10(result ,newcounter)
return answe1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10, counter, result, newcounter
def assignmentanswer(counter, result):
if counter == 1:
answer0 = result
if counter == 2:
answer1 = result
if counter == 3:
answer2 = result
if counter == 4:
answer3 = result
if counter == 5:
answer4 = result
if counter == 6:
answer5 = result
if counter == 7:
answer6 = result
if counter == 8:
answer7 = result
if counter == 9:
answer8 = result
if counter == 10:
answer9 = result
return counter, result
def changecountervalue(counter):
counter10 = int(counter/10)
newcounter = (counter10*10) - counter
return newcounter
def assignmentanswerover10(newcounter, result):
if newcounter == 1:
answer0 = result
if newcounter == 2:
answer1 = result
if newcounter == 3:
answer2 = result
if newcounter == 4:
answer3 = result
if newcounter == 5:
answer4 = result
if newcounter == 6:
answer5 = result
if newcounter == 7:
answer6 = result
if newcounter == 8:
answer7 = result
if newcounter == 9:
answer8 = result
if newcounter == 10:
answer9 = result
return newcounter, result
def showallresult(answe1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10):
print(answer0)
print(answer1)
print(answer2)
print(answer3)
print(answer4)
print(answer5)
print(answer6)
print(answer7)
print(answer8)
print(answer9)
def calculator():
setup()
decideprocess()
while decision == "+" or decision == "-" or decision == "*" or decision == "/" or decision == "all":
processes(decision, counter)
showallresult(answe1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10)
calculator()

看起来有些代码需要缩进更多。

取而代之的是...

def processes(decision, counter):
decision = decideprocess()
if decision == "+":
addition(counter)
decideprocess()
return counter
elif decision == "-":
subtraction(counter)
decideprocess()
return counter
elif decision == "*":
multiplecation(counter)
decideprocess()
return counter
elif decision == "/":
devision(counter)
decideprocess()
return counter
elif decision == "all":
print(answer0)
print(answer1)
print(answer2)
print(answer3)
print(answer4)
print(answer5)
print(answer6)
print(answer7)
print(answer8)
print(answer9)
decideprocess()
return answe1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10, counter, decision, result

。试试这个:

def processes(decision, counter):
decision = decideprocess()
if decision == "+":
addition(counter)
decideprocess()
return counter
elif decision == "-":
subtraction(counter)
decideprocess()
return counter
elif decision == "*":
multiplecation(counter)
decideprocess()
return counter
elif decision == "/":
devision(counter)
decideprocess()
return counter
elif decision == "all":
print(answer0)
print(answer1)
print(answer2)
print(answer3)
print(answer4)
print(answer5)
print(answer6)
print(answer7)
print(answer8)
print(answer9)
decideprocess()
return answe1, answer2, answer3, answer4, answer5, answer6, answer7, answer8, answer9, answer10, counter, decision, result

最新更新