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