我正在编写一个小程序来计时和显示,以有序的方式,我的魔方解算。(3)一直困扰我的是在全局声明之前使用的时间。但奇怪的是,IT一开始就声明为times = []
(是的,这是一个列表),然后再一次,在函数(这就是他抱怨的地方)上使用times = [some, weird, list]
,并使用global times
“全局化”它。
import time
times = []
def timeit():
input("Press ENTER to start: ")
start_time = time.time()
input("Press ENTER to stop: ")
end_time = time.time()
the_time = round(end_time - start_time, 2)
print(str(the_time))
times.append(the_time)
global times
main()
def main():
print ("Do you want to...")
print ("1. Time your solving")
print ("2. See your solvings")
dothis = input(":: ")
if dothis == "1":
timeit()
elif dothis == "2":
sorte_times = times.sort()
sorted_times = sorte_times.reverse()
for curr_time in sorted_times:
print("%d - %f" % ((sorted_times.index(curr_time)+1), curr_time))
else:
print ("WTF? Please enter a valid number...")
main()
main()
任何帮助都将非常感谢,因为我是Python世界的新手。
7条答案
按热度按时间h6my8fg21#
全局声明是指声明
times
为global
如果变量声明为
global
,则不能在声明之前使用。在本例中,我认为您根本不需要声明,因为您没有对
times
赋值,只是修改它。uttx8gqw2#
从Python文档中:
全局语句中列出的名称不能在该全局语句前面的同一代码块中使用。
https://docs.python.org/reference/simple_stmts.html#global
因此,将
global times
移到函数的顶部应该可以修复它。但是,在这种情况下,您应该尽量不要使用
global
。考虑使用类。qnyhuwrf3#
来自Python文档
全局语句中列出的名称不能在该全局语句前面的同一代码块中使用。
qxsslcnc4#
这个程序应该可以工作,但可能无法完全按照您的预期工作。请注意更改。
62lalag45#
应该可以。“global[varname]”必须从定义开始;)
ivqmmu1c6#
对于主程序,你可以在顶部声明它。不会有任何警告。但是,如前所述,全局提及在这里没有用。每个放在主程序中的变量都在全局空间中。在函数中,你必须声明你想用这个关键字为它使用全局空间。
62o28rlo7#
我得到了下面相同的错误:
语法错误:名称"x"在全局声明之前使用
尝试使用**时,inner()中的局部和全局变量
x
**如下所示:并且,当尝试使用**inner()中的非局部和全局变量
x
**时,如下所示:因此,我将局部变量的
x
重命名为y
,如下所示:然后,如下所示解决了错误:
并且,我将非本地变量的
x
重命名为y
,如下所示:然后,如下所示解决了错误: