NameError: 全局名称 'change' 未定义" + 其他错误
我刚开始学习Python,目前使用的是Python 3.3.3,顺便提一下。下面是我的代码,我把一个叫Batch Script的语言的代码翻译成了Python。这里是Batch Script的代码。我不知道哪里出错了,但当我运行这个代码时,出现了NameError: global name 'change' is not defined
的错误。我用http://pych.atomidata.com/code来检查语法,如果你把我的Python代码放进去检查,结果只会看到几个代码错误,还有一些Pep-8的错误。我想不出还有什么问题。我甚至不知道大部分代码错误是什么,而Pep-8的错误都是Line: __ Column: __ E302 expected 2 blank lines, found 1
。
import subprocess as sp
global change
global count
def numberInput():
while True:
try:
number = int(input("Input a number, please: "))
sp.call('cls', shell=True)
break
except ValueError:
print('Please enter a valid input...')
sp.call('pause', shell=True)
numberInput()
change = number
numberVerify()
def numberVerify():
if change == 0:
numberCorrectIsTrue()
else:
number = change
def numberCorrectIsTrue():
count = count + 1
integer = number
# checks to see if the input
# is valid or not.
if number != integer:
sp.call('cls', shell=True)
print("Please enter a valid number!")
loop()
else:
even = number % 2
if even == 0:
print("Substituting x in 'x / 2' with {}".format(number))
answer = number / 2
else:
print("Substitiuting x in '(3 * x) + 1' with {}".format(number))
answer = number * 3
answer = answerOdd + 1
print(answer)
if answer == 1:
returnStats()
else:
numberCorrectIsTrue()
def returnStats():
print("Your original input of {} returned as 1.".format(change))
print("A total of {} operations were executed.".format(count))
change = change + 1
count = 0
sp.call('pause', shell=True)
numberVerify()
def check():
number = answer
numberCorrectIsTrue()
numberInput()
3 个回答
0
在每个给值给“change”或“count”的函数开头加上“global change”。
比如,numberInput() 函数应该像这样:
def numberInput():
global change
while True:
...
来源:在其他函数中使用全局变量
1
在代码块中使用global
并不会被这个代码块里的函数继承。也就是说,每个需要修改全局变量的函数,都必须自己再声明一次global
来告诉程序它要使用这个全局变量。
2
这些代码行:
global change
global count
应该改成
change = 0
count = 0
global
这个关键词是用来指代全局变量的,所以在函数中使用这些值时,应该这样写:
def func():
global count
count = count + 1