def main_loop():
print "where are you from?"
loc = raw_input()
print "so your from " + loc + "?"
ans = raw_input()
def isittrue():
if ans == "yes":
print "We all love " + loc
else:
print "Where did you say you were from again?"
main_loop()
isittrue()
我试图创建一个脚本,提示用户输入他们的位置,要求他们确认位置,如果确认位置然后显示消息,否则再次启动脚本。
但是不断收到以下错误: NameError:name' ans'未在main.py
的第18行定义非常感谢任何建议。
答案 0 :(得分:1)
您的问题是范围。变量名称是它们被调用的函数的本地名称。
如果您在ans
内引用isittrue()
,那么Python - 以及大多数语言 - 都不知道您在另一个函数中引用变量。他们只能访问封闭范围内的变量,在本例中是全局范围。
最简单的方法是将isittrue
移到 mainloop()
内,使封闭范围变为mainloop()
和isittrue()
的范围可以访问mainloop
。
def main_loop():
print "where are you from?"
loc = raw_input()
print "so your from " + loc + "?"
ans = raw_input()
def isittrue():
if ans == "yes":
print "We all love " + loc
else:
print "Where did you say you were from again?"
isittrue()
main_loop()
答案 1 :(得分:1)
您的 import java.io.IOException;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
public class Main {
public static void main(String[] args) throws SAXException, IOException{
XMLReader p = XMLReaderFactory.createXMLReader();
p.setContentHandler(new handler());
p.parse("test1.xml");
}
----------------------------------------
import org.xml.sax.helpers.DefaultHandler;
public class handler extends DefaultHandler {
@Override
public void startElement(String SpacenameURI, String localName,
String qName, Attributes attrs) {
System.out.println("qname = " + qName);
String node = qName;
if (attrs != null) {
for (int i = 0; i < attrs.getLength(); i++) {
//nous récupérons le nom de l'attribut
String aname = attrs.getLocalName(i);
//Et nous affichons sa valeur
System.out.println("Attribut " + aname + " valeur : " + attrs.getValue(i));
}
}
}
}
变量是函数main_loop()的本地变量,因此在ans
函数
你可以通过在isittrue
函数的顶部添加以下来使ans变量全局变量,然后可以从main_loop
函数获取ans。
但是,不建议将全局变量用作全局变量是邪恶的
isittrue
或更好的方法是使用def main_loop():
global ans, loc
print "where are you from?"
loc = raw_input()
print "so your from " + loc + "?"
ans = raw_input()
从return
函数返回ans
main_loop
答案 2 :(得分:0)
我编辑了你的代码,这很有效:
def main_loop():
print ("where are you from?")
loc = input()
print ("so your from " + loc + "?")
ans = input()
isittrue(ans,loc)
def isittrue(ans,loc):
if ans == "yes":
print ("We all love " , loc)
else:
print ("Where did you say you were from again?")
main_loop()
你只能使用main_loop()进行调用,并在main_loop中使用isittrue(),传递两个字符串。另外,使用input(),raw_input()&#34;是否过时&#34;