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

NameError after attempt to apply imported modules

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

这是因为当您导入某些内容时,变量不会继续存在。相反,你应该这样说:

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()

我会将您的 "modules" 转换为函数,并将它们全部放在同一个模块中(这真的不是一个非常大的程序,我也没有理由为此设置单独的模块)。然后,您可以 运行 这个模块,整个程序将 运行 按预期进行:

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