回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我对python还是个新手。我正在为一个更大的项目工作。这个程序让你想到一个圆形或正方形,然后问四个问题,然后决定一个答案。在</p>
<p>我正在执行框架的最后一步,但遇到了一个问题。我得到“未定义全局名‘qas1’”</p>
<blockquote>
<p>Line 50 in getQuestion question = 'qas' Global name 'qas' is not defined</p>
</blockquote>
<p>当我试图腌制元组的时候就发生了这种事。在</p>
<p>下面是我的加载程序,用于创建包含元组的pickle文件:</p>
<pre><code>import cPickle
import os
qas1 = [
('Are you more like Waffle or a Pancake'),
('1. Waffle', 1, 0),
('2. Pancake', 0, 1)
]
qas2 = [
('Do you have a straight edge?'),
('1. Yes', 1, 0),
('2. No', 0, 1)
]
qas3 = [
('Are you simliar in shape to a lolipop?'),
('1. Yes', 0, 1),
('2. No', 1, 0)
]
qas4 = [
('Is the world rounded like a planet, or flat like a map?'),
('1. Rounded', 0, 1),
("2. Flat", 1, 0)
]
def hasFile():
print 'I see the file'
qas_file = open('qas.dat', 'r')
qas1 = cPickle.load(qas_file)
qas2 = cPickle.load(qas_file)
qas3 = cPickle.load(qas_file)
qas4 = cPickle.load(qas_file)
qas_file.close
confirmer()
def noFile():
print 'I dont see a file...'
saver()
def confirmer():
print qas1
print qas2
print qas3
print qas4
def saver():
qas_file = open('qas.dat', 'w')
print 'No worries, creating one now'
cPickle.dump(qas1, qas_file)
cPickle.dump(qas2, qas_file)
cPickle.dump(qas3, qas_file)
cPickle.dump(qas4, qas_file)
qas_file.close
print 'all done'
fname = "qas.dat"
if os.path.isfile(fname):
hasFile()
else:
noFile()
</code></pre>
<p>代码工作正常,但当我试图使用它创建的文件时遇到了问题。在</p>
^{pr2}$
<p>我知道,这需要看很多代码。当程序第一次加载名称<code>qas1</code>时,它会重新确认它是一个元组,但是当我试图将属性传递给<code>getQuestion()</code>中的'question'时:它忘记了它们是什么。有什么理想问题吗?在</p>