【发布时间】:2017-04-09 20:05:27
【问题描述】:
我无法从另一个函数中的函数调用变量。
我有两个功能:
def refineRate(event):
if refineRate(event) == int():
refine = int(refineRate(event))
return refine
else:
refine = float(refineRate(event))
return refine
和:
def veldCalc(event):
minValue = open("mineral_value.csv", "r")
veld = minValue.readlines()[0]
minValue.close()
veld = veld[0:3]
veld = int(veld)
veld = veld / 100 * refineRate(event)
refinedVeld = veld * int(veldCalc)
print (refinedVeld)
我还有两个条目,计算器的用户可以在其中输入一些数字。
repro = Label(root, text="Reprocessing %")
repro_entry = Entry(root)
repro.grid(row=0, column=0)
repro_entry.grid(row=0, column=1)
veld = Label(root, text="Veldspar: ")
veld_entry = Entry(root)
veld.grid(row=1, column=0)
veld_entry.grid(row=1, column=1)
repro_entry.bind("<KeyPress>", refineRate)
veld_entry.bind("<KeyPress>", veldCalc)
我需要用户在那里输入refineRate,然后应该通过函数传递并存储以供以后使用。当他们输入他们拥有的数量时,veldCalc 函数应该从前一个函数中提取用户细化率并进行数学运算,但我得到以下错误
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Ganjena\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:/Users/Ganjena/Desktop/Course/Projects/helloworld/ORE FUNCTIONS/Ore Calculator.py", line 5, in refineRate
if refineRate(event) == int():
File "C:/Users/Ganjena/Desktop/Course/Projects/helloworld/ORE FUNCTIONS/Ore Calculator.py", line 5, in refineRate
if refineRate(event) == int():
File "C:/Users/Ganjena/Desktop/Course/Projects/helloworld/ORE FUNCTIONS/Ore Calculator.py", line 5, in refineRate
if refineRate(event) == int():
[Previous line repeated 990 more times]
RecursionError: maximum recursion depth exceede
知道为什么这不起作用吗?提前谢谢你。
【问题讨论】:
-
第一个函数中的递归永远不会停止,你的
if条件中总是有一个递归调用...... -
好的,我想我明白了,我该如何阻止呢?但它不是一个循环,为什么它会继续自己运行?
-
因为它是一个总是调用自身的递归函数,例如 try
def f(): f()您永远不会到达 else 块,因为每次调用该函数时,它都会检查if条件,然后再次调用自己。 .. 无休止地(好吧,直到 Python 出错)。实际上,您总是最终会使用递归调用...所以我不知道您期望发生什么或您的函数打算做什么。 -
我想要它做的就是接受用户输入检查它是
int还是float,然后将其存储在veldCalc函数中使用 -
你的其余代码也很奇怪。例如,在您的第二个函数中,您希望
veld * int(veldCalc)做什么?veldCalc是函数本身!
标签: python python-3.x function variables tkinter