2016-07-12 5 views
-1

У меня есть немного длинная и повторяющаяся программа, в которой я импортирую в нее другие модули, чтобы затем собрать всю собранную информацию в завершенное предложение. Проблема, с которой я столкнулась, - это все, что я определил, прежде чем перейти к следующей части, появится как 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.") 

Вот место модуль:

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 
+0

Поскольку это было опубликовано, я считаю, что испортил форматирование для публикации кода, извинения, все еще действительно новые в этом! –

+2

Исправьте свое форматирование. Нажмите «Изменить», вставьте код и нажмите «Control + K» (или Cmd + K). Пока вы на нем, отправьте сообщение MVCE. – SuperSaiyan

+0

В какой строке вы точно получаете ошибку? Также вы можете вставить сообщение об ошибке? – KartikKannapur

ответ

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 
+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() 
Смежные вопросы