python - 在我引用之前未分配全局变量的问题
问题描述
我有这个关于斐波那契数列的代码,并将 n 个斐波那契数写入文件。我想知道为什么我在这里得到一个未绑定的本地错误。它说我在赋值之前引用了变量 fib_call 。
fib_called = False
def global_fib(n, filename):
global gf
gf = load_fib(filename)
i = 0
write_fib(filename)
while i < n:
fib()
write_fib(filename)
i += 1
return return_fib()
import os
def fib():
if len(gf) == 1:
gf.append(1)
else:
gf.append(int(gf[-1] + gf[-2]))
fib_called = not fib_called
def write_fib(filename):
if fib_called == True:
filename.open('w')
filename.write(str(gf[-1]) + ' ')
fib_called = not fib_called
def load_fib(filename):
if os.path.exists(filename):
filename.open('r')
content == filename.read()
return list(content)
else:
f = open("newfile",'w')
f.write('0' + ' ')
return [0]
def return_fib():
return gf[-1]
解决方案
您需要添加global fib_called
到fib
和write_fib
功能。
fib_called = False
def global_fib(n, filename):
global gf
gf = load_fib(filename)
i = 0
write_fib(filename)
while i < n:
fib()
write_fib(filename)
i += 1
return return_fib()
import os
def fib():
global fib_called
if len(gf) == 1:
gf.append(1)
else:
gf.append(int(gf[-1] + gf[-2]))
fib_called = not fib_called
def write_fib(filename):
global fib_called
if fib_called == True:
filename.open('w')
filename.write(str(gf[-1]) + ' ')
fib_called = not fib_called
def load_fib(filename):
if os.path.exists(filename):
filename.open('r')
content == filename.read()
return list(content)
else:
f = open("newfile",'w')
f.write('0' + ' ')
return [0]
def return_fib():
return gf[-1]
推荐阅读
- react-native - React Native 我的删除按钮不起作用
- webview2 - WebView2 (2020/06) -> DOM 在哪里?
- java - 提示的水平选择器
- javascript - 我如何/在哪里可以检查 JS 方法的内部代码?
- c# - 在 asp.net 中检查表中的值
- callback - ROS 近似时间同步器未进入回调
- python - Python Tkinter GUI 自动化
- android - Android - 如果文本视图之间存在冲突,请使用省略号
- python - `if __name__ == '__main__':` 成语有名称吗?
- python - 如何在python中缩放覆盖?