尝试应用导入的模块后出现NameError

时间:2016-07-12 18:33:36

标签: python import nameerror

我有一个稍微冗长和重复的程序,我将其他模块导入其中,然后将收集到的所有信息放入一个完整的句子中。我遇到的问题是我在进入下一部分之前定义的所有内容,显示为NameError。

以下是代码:

 import number 
 print("Hello! \nWhat is your name?") 
 myName = input()
 print("Well, " + myName + ", I think it is time for us to play a
 little game.") 
 print("First, I need to know how old you are. Please
 type your age using only numbers.") 
 while True:
     age = input()
     try:
         if age:
             age = float(age)
             print("Great!\nNow, where do you live " + myName + "?")
             import Place
     except ValueError:
         print("I'm sorry, I did not understand your answer. Please only use digits and no decimals.")

这是Place模块:

 print("As a reminder, I am unable to tell the difference between
 places and anything else you respond with. You can make me sound
 silly, or you can just answer the question so everything makes sense
 in the end!") 
 place = input() 
 print("Alright!\nNow what is your
 gender?") 
 print("While today's society has more than two ways to
 describe gender, please only use male or female for the sake of
 simplicity!") 
 while True:
     gender = input()
     if gender == "male":
         print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
         import Answer
     if gender == "MALE":
         print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
         import Answer
     if gender == "Male":
         print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
         import Answer
     if gender == "FEMALE":
         print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
         import Answer
     if gender == "Female":
         print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
         import Answer
     if gender == "female":
         print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
         import Answer
     else:
         print("Are you a male or female?")

这是答案模块:

while True:
    print("Did I get everything correct?\nPlease say yes or no.")
    answer = input()
    if answer == "Yes":
        print("Great! Thanks for playing!")
        break
    if answer == "yes":
        print("Great! Thanks for playing!")
        break
    if answer == "YES":
        print("Great! Thanks for playing!")
        break
    elif answer == "no":
        print("Okay! To make sure I avoid any errors, we must start from the beginning!")
        import Self_Story
    elif answer == "No":
        print("Okay! To make sure I avoid any errors, we must start from the beginning!")
        import Self_Story
    elif answer == "NO":
        print("Okay! To make sure I avoid any errors, we must start from the beginning!")
        import Self_Story
    else:
        print("I'm sorry, I did not understand that.")

以下是错误消息:

Traceback (most recent call last):
  File "/Users/Maddiefayee/Documents/Self_Story.py", line 12, in <module>
    import Place
  File "/Users/Maddiefayee/Documents/Place.py", line 20, in <module>
    print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
NameError: name 'myName' is not defined

2 个答案:

答案 0 :(得分:1)

这是因为当您导入某些内容时,变量无法继续使用。相反,你应该这样说:

def place():
    print("As a reminder, I am unable to tell the difference between
places and anything else you respond with. You can make me sound
silly, or you can just answer the question so everything makes sense
in the end!") 
place = input() 
print("Alright!\nNow what is your
gender?") 
print("While today's society has more than two ways to
describe gender, please only use male or female for the sake of
simplicity!") 
while True:
    gender = input()
    if gender == "male":
        print("Your name is " + myName + " and you are " + age + "    years old. You are a " + gender + " and you live in " + place + "!")
     import Answer
 if gender == "MALE":
     print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
     import Answer
 if gender == "Male":
     print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
     import Answer
 if gender == "FEMALE":
     print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
     import Answer
 if gender == "Female":
     print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
     import Answer
 if gender == "female":
     print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
     import Answer
 else:
     print("Are you a male or female?")
def answer():
   while True:
   print("Did I get everything correct?\nPlease say yes or no.")
   answer = input()
   if answer == "Yes":
       print("Great! Thanks for playing!")
       break
   if answer == "yes":
       print("Great! Thanks for playing!")
       break
   if answer == "YES":
       print("Great! Thanks for playing!")
       break
   elif answer == "no":
       print("Okay! To make sure I avoid any errors, we must start from    the beginning!")
       import Self_Story
   elif answer == "No":
       print("Okay! To make sure I avoid any errors, we must start from    the beginning!")
       import Self_Story
   elif answer == "NO":
       print("Okay! To make sure I avoid any errors, we must start from    the beginning!")
       selfStory()
   else:
       print("I'm sorry, I did not understand that.")
def selfStory():
   import number 
   print("Hello! \nWhat is your name?") 
   myName = input()
   print("Well, " + myName + ", I think it is time for us to play a
   little game.") 
   print("First, I need to know how old you are. Please
   type your age using only numbers.") 
   while True:
       age = input()
       try:
           if age:
               age = float(age)
               print("Great!\nNow, where do you live " + myName + "?")
               place()
       except ValueError:
           print("I'm sorry, I did not understand your answer. Please    only use digits and no decimals.")
selfStory()

答案 1 :(得分:0)

我将你的“模块”转换为函数,并将它们全部放在同一个模块中(这实际上不是一个非常大的程序,也没有任何理由我认为它有单独的模块)。然后,您可以运行此模块,整个程序将按预期运行:

def GetNameAge():
    print("Hello! \nWhat is your name?") 
    myName = input()
    print("Well, " + myName + ", I think it is time for us to play a little game.") 
    print("""First, I need to know how old you are. Please
    type your age using only numbers.""") 
    while True:
        age = input()
        try:
            if age:
                age = str(float(age))
                return myName, age
        except ValueError:
            print("I'm sorry, I did not understand your answer. Please only use digits and no decimals.")

def GetPlaceGender():
    print("""As a reminder, I am unable to tell the difference between
    places and anything else you respond with. You can make me sound
    silly, or you can just answer the question so everything makes sense
    in the end!""") 
    place = input() 
    print("""Alright!\nNow what is your gender?\nWhile today's society has more than two ways to describe gender, 
    please only use male or female for the sake of simplicity!""") 
    while True:
        gender = input()
        gender = gender.lower().strip()
        if gender in ["male","female","m","f"]:
            return "male" if gender[0] == "m" else "female", place
        else:
            print("Are you a male or female?")   

def GetAnswer():
    while True:
        print("Did I get everything correct?\nPlease say yes, no, or exit.")
        answer = input()
        answer = answer.lower().strip()
        if answer in ["yes","y"]:
            print("Great! Thanks for playing!")
            return True
        elif answer in ["no","n"]:
            print("Okay! To make sure I avoid any errors, we must start from the beginning!")
            return False
        elif answer == "exit":
            return True
        else:
            print("I'm sorry, I did not understand that.")

if __name__ == "__main__":    
    while True:
        myName, age = GetNameAge()
        print("Great!\nNow, where do you live, " + myName + "?")
        gender, place = GetPlaceGender()
        print("Your name is " + myName + " and you are " + age + " years old. You are a " + gender + " and you live in " + place + "!")
        if GetAnswer(): break