Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 8 years ago.
Improve this question
I've tried to design a small (3 rooms) "adventure-like" mini-game, and when i run it i get:
if answer == "restaurant":
IndentationError: unindent does not match any outer indentation level
# TRUMANIA v. 0.0.2
def Square():
print "You exit from there, and you appear in Central Square. Do you want to walk to the Library or to the Restaurant?"
answer = raw_input("Type 'Restaurant' or 'Library' and hit 'Enter'.").lower()
if answer == "restaurant":
Restaurant()
elif answer == "library":
Library()
else:
print "You didn't pick Restaurant or Library! You can't just stand there like a rock; you need to make a decision!"
Square()
def Trumania():
print "You've just entered Trumania!"
print "Do you want to go to the Restaurant or visit the Library?"
answer = raw_input("Type 'Restaurant' or 'Library' and hit 'Enter'.").lower()
if answer == "restaurant":
Restaurant()
elif answer == "library":
Library()
else:
print "You didn't pick Restaurant or Library! You can't just stand in the entrance like a scarecrow; you need to make a decision!"
Trumania()
def Restaurant():
print "You've just entered the Restaurant!"
print "Do you want to eat Inside or Outside?"
answer = raw_input("Type 'Inside' or 'Outside' and hit 'Enter'.").lower()
if answer == "inside":
print "You need to bribe the waiter, but you get a cozy table and have a wonderful meal!"
elif answer == "outside":
print "You get a cheap (and cold) table in the outside and manage to eat some apetizers"
else:
print "You didn't selected Inside or Outside. The Waiter euh... Waits... "
Restaurant()
def Library():
print "You arrive at the Library!"
print "Do you want to get some books or you prefer to study?"
answer = raw_input("Type 'Books' or 'Study' and hit 'Enter'.").lower()
if answer == "books":
print "You get some books that you can sell later. However, thats bad karma!"
elif answer == "study":
print "You learn a lot!However, you feel tired after so much effort"
else:
print "You didn't pick Books or Study! Try again."
Library()
Trumania()
Square()
The idea is to start in Trumannia, then be able to choose Restaurant or Library, and then exit to Square and be able to choose again Restaurant or Library. So I'm not sure a) how to fix the error and b) how to format the different variables so the program can "load" all the info first and then "go" to each place when needed. I hope i explained myself. Thanks again!
Your code is broken because there is no colon after def Square().
Related
I'm using a series of inputs and if statements to create a text game/ choose your own adventure where input decides what happens next within a function.
I was testing part of a function, and there should be a total of four strings that print with an input prompt, but after the first two it just moves onto the cell after the function. No error message. I'm using Jupyter Notebook with the latest version of Python. Any help appreciated in making the full function run. (Please ignore the goofy text, sorry for errors this is my first question)
start = input('Welcome to Witness Protection, enter HELP if you need help')
def helper():
if start == 'HELP':
answer= input('')
if answer == 'PICK':
answer= input('')
elif answer == 'WALK':
print('')
if answer == 'TRY':
answer= input('')
elif answer == 'WALK AWAY':
print('')
if answer == 'IN':
answer = input('')
elif answer == 'PUT':
print('')
if answer == 'ON':
answer = input('')
elif answer == 'BACK':
print('')
if start == 'HELP':
helper()
I have checked that I am using the right input, changed elifs to ifs nothing else came to mind that could be the issue any help appreciated
It looks like you want another input instead of a print after elif answer == 'WALK':. When you hit if answer == 'TRY' you haven't given them a chance to change the value of answer yet.
Also, you probably want a different kind of structure for your code. When you use if, only the code that is indented after the if and before the elif or else at the same level of indentation will get run. This means that if someone answers PICK, then none of the code below WALK will get run because the elif answer == 'WALK' section never gets entered. You may want to try a while loop with code that checks different variables to determine what to print at each loop (like what room they are in, what items they have, etc.), and then gets a new input from the user at the end of each loop.
Seems you have some mismatch with the nested if's.
you should indent the if's according to the flow of the questions, something like that:
def helper():
if start == 'HELP':
answer= input('Woah. As you are walking to the FBI office, you see a glistening penny on the floor. Something about it looks strange. What do you do? Enter PICK to pick it up or WALK to keep walking')
if answer == 'PICK':
answer= input('You reach down and grasp the penny, and try to pull it. It doesn’t move. Enter TRY to try again or WALK AWAY to walk away')
if answer == 'WALK AWAY':
print('You keep walking until you reach the FBI office. You make your way to the office of your agent, and sit down to wait for them.')
elif answer == 'TRY':
answer= input('The penny clicks out of place and slides along a track between the paving slabs. One of the slabs slides open. Enter IN to climb in or PUT to put the penny back where it was')
if answer == 'IN':
answer = input('A few metres down, you hit the floor, and see the opening above you close up. You find yourself in an ice cavern, surrounded by the bodies of slain ice dwarfs. Enter ON to walk on or BACK to back')
if answer == 'ON':
answer = input('You enter the realm of the evil wizard. He tells you he is thinking of giving up evil and asks you if you would like to join him in taking over the world and establishing a utopia. Enter YES for \'Of course I will join you, let’s do this!\' Enter THINK for \'That’s a big decision, I need some time to think about it\' Enter NO for \'Woah, sorry buddy, I’m just lost, I’m gonna have to bounce\'')
elif answer == 'BACK':
print('You scramble back to the surface and try to forget what just happened. You continue towards FBI HQ, and wait for your agent at their desk')
elif answer == 'PUT':
print('You move the penny back to where it was, and the slab slides back into place. You continue your walk towards the FBI offices, and wait for your agent in front of their desk')
elif answer == 'WALK':
print('You enter the building and make your way to the office of your agent, and sit down to wait for them.')
Im new to python so I decided to help myself learn by creating a basic game using python 3! My problem occurs whenever I try to use "def". When I try to run this program it skips all user input entirely because of the def. The goal of using a function in this case would be to return the player to the where it presents the two doors. Maybe its an issue related to indentation? If anyone could give it a shot and see if you can spot the error your help would be greatly appreciated! :D
def sec1 ():
print ("You have two doors in front of you. Do you choose the door on the left or right?")
room1 = input('Type L or R and hit Enter.')
if room1 == "L":
print ("********")
print ("Good choice",name)
elif room1 == "R":
print ("********")
print ("Uh oh. Two guards are in this room. This seems dangerous.")
print ("Do you want to retreat or coninue?")
roomr = input('Type R or C and hit enter.')
if roomr == "R":
print ("Good choice!")
sec1()
You have an indentation problem. Indentation matters in Python. According to the PEP8 styling guideline it is recommended to use 4 spaces instead of tabs for indentation. Also you are missing the name variable.
Below is a quick fix:
def sec1 ():
print("You have two doors in front of you. Do you choose the door on the left or right?")
room1 = input('Type L or R and hit Enter.')
name = "Player Name"
if room1 == "L":
print("********")
print("Good choice", name)
elif room1 == "R":
print("********")
print("Uh oh. Two guards are in this room. This seems dangerous.")
print("Do you want to retreat or coninue?")
roomr = input('Type R or C and hit enter.')
if roomr == "R":
print("Good choice!")
sec1()
sec1()
Why we have sec1() at then end?
Functions are like machines. It does nothing by it's own. Somebody has to operate it. sec1() (notice the parenthesis) at the end is sending a signal to start executing the function sec1 defined at the top.
I think the best way to learn is to put break points and use the debugger to learn which way the program flows.
Run the program in a debug mode and click on the icons to step through, step over etc. It sounds complicated but it is very easy and saves you a lot of time once you know how to do this feature.
Mathematical Functions
Maybe it is a bit off topic to mention Mathematical Functions here but I think, it's completely worth it. Functions in programming languages are heavily inspired by Mathematical Functions, however, in most of the programming languages these days (except functional programming languages like Haskell, F# etc) the concepts of the original Mathematical Functions are quite deviated over the year.
In Mathematics, the output of a function purely depends upon it's input and does not modify the values outside the function, however, in most of the programming languages this is not always the case and sometimes it can be a source of run time errors.
Tips
As you are a beginner, I highly recommend to use a proper IDE (Integrated Development Environment) if you haven't already. PyCharm has a free community version. IDEs come with a PEP8 style checker, debugger, profiler etc and help you to learn Python much more easily.
def sec1 ():
print ("You have two doors in front of you. Do you choose the door on the left or right?")
room1 = input('Type L or R and hit Enter.')
the function body should be indented
In Python, indentation is very important. Here's an example of your code with proper indentation (And a couple of liberties take on my part):
def sec1 ():
print ("You have two doors in front of you. Do you choose the door on the left or right?")
name = input('Enter your name.')
room1 = input('Type L or R and hit Enter.')
if room1 == "L":
print ("********")
print ("Good choice",name)
elif room1 == "R":
print ("********")
print ("Uh oh. Two guards are in this room. This seems dangerous.")
print ("Do you want to retreat or coninue?")
roomr = input('Type R or C and hit enter.')
if roomr == "R":
print ("Good choice!")
elif roomr == "C":
print ("Run!")
sec1()
This question already has answers here:
Asking the user for input until they give a valid response
(22 answers)
Closed 6 years ago.
Question1 = input("We will start off simple, what is your name?")
if len(Question1) > 0 and Question1.isalpha(): #checks if the user input contains characters and is in the alphabet, not numbers.
Question2 = input("Ah! Lovely name, %s. Not surprised you get all the women, or is it men?" % Question1)
if Question2.lower() in m: #checks if the user input is in the variable m
print ("So, your name is %s and you enjoy the pleasure of %s! I bet you didnt see that coming." % (Question1, Question2))
elif Question2.lower() in w: # checks if the user input is in the variable w
print ("So, your name is %s and you enjoy the pleasure of %s! I bet you didnt see that coming." % (Question1, Question2))
else: #if neither of the statements are true (incorrect answer)
print ("Come on! You're helpless. I asked you a simple question with 2 very destinctive answers. Restart!")
else:
print ("Come on, enter your accurate information before proceeding! Restart me!") #if the first question is entered wrong (not a name)
Question3 = input("Now I know your name and what gender attracts you. One more question and I will know everything about you... Shall we continue?")
In order to get the right answer, I will first tell you what happens when I run it:
There are several scenarios but I will walk you through 2. When I run the program I am first asked what my name is, I can enter anything here that is alphabetic, then it asks me if I like men or woman, weird I know but it's a project I am working on, if I were to say 'men' or 'women' the program runs perfectly, but if I were to enter say... 'dogs' it would follow the else statement print ("Come on! You're helpless. I asked you a simple question with 2 very destinctive answers. Restart!") but then it continues the code and goes to the last line shown above "Now I know your name and what gender attract you...... blah blah". What I am trying to do is have it restart the script if you were to enter anything other than 'men' or 'women'.
I was told that a while statement would work, but I would need an explanation as to why and how... I'm new to Python in a sense.
That's what loops are for.
while True:
# your input and all that here
if answer == "man" or answer == "woman":
# do what you want if the answer is correct
break # this is important, as it breaks the infinite `while True` loop
else:
# do whatever you want to do here :)
continue
If you want the script to repeat indefinitely, you can simply wrap everything in a while loop like so:
while True:
# Do yo your logic here.
# Break out when a condition is met.
If you want to be more savvy with it you can use a method and have the method call itself over and over until it's done.
def ask_questions():
# Do your logic here
if INPUT_NOT_VALID:
ask_questions()
else:
# Continue on.
Also, search on this site for you text because I've seen about five or six questions all involving this programming scenario which means it has to be a common problem from a programming class (one I'm assuming you are in). If that's the case discuss with classmates and try to stimulate each other to find the solution instead of just posting online for an answer.
Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 8 years ago.
Improve this question
name=input("Hello person, Whats your name?")
print("Hello", name)
print("Do you want to hear a story?", name)
choice=input("Yes, No?")
if choice==("yes" or "yes " or "Yes" or "Yes "):
print("Ok", name,", listen up")
print("There was once an old, old house at the top of a hill Sooooo high it was above the clouds")
choice2=input("What do you want to call the house?")
print("The old,",choice2,"was once owned by an old lady. ")
elif choice==("maybe"):
print("You found an easter egg, congrats. PS this does nothing")
Whats wrong with this code?? It says in the idle shell syntax error. The last elif statement isn't working.
This is a petty indentation issue, your print statements for the if blocks are not indented right and so the elif seems to be out of place. Note that python keeps track of logical blocks by the indentation.
name=input("Hello person, Whats your name?")
print("Hello", name)
print("Do you want to hear a story?", name)
choice=input("Yes, No?")
if choice==("yes" or "yes " or "Yes" or "Yes "):
print("Ok", name,", listen up")
print("There was once an old, old house at the top of a hill Sooooo high it was above the clouds")
choice2=input("What do you want to call the house?")
print("The old,",choice2,"was once owned by an old lady. ")
elif choice==("maybe"):
print("You found an easter egg, congrats. PS this does nothing")
As already pointed out, if choice==("yes" or "yes " or "Yes" or "Yes ") is wrong, use if choice.lower().strip() == "yes" instead, or if choice in ("yes", "yes ", "Yes", "Yes ").
If in case this is python 2, input will throw an error, use raw_input instead.
Also print with multiple statements will throw errors as well if used like a function, so change them from print(statement_x, statement_y, statement_z) to print statement_x, statement_y, statement_z
I was trying to make a simple Python game for some struggling math students at my high school, however our computers are not allowed to run Python due to security issues. So I decided to give them the code and have them run it online, but every site I go to says that the code has an EOFerror and an indention error. I have ran the code a dozen times in Powershell and everything was fine. It is always focused on my raw_input() statements. Can someone please tell me what is going on and any solution would by greatly appreciated. This is just the Intro so there is no math, just something to set the story.
def cell():
print """
"Welcome roomie!"
You wake up to find yourself in a jail cell
"You have been sleeping since the guards threw you in here.
They must have hit you pretty hard, ha ha ha."
You look around
finally your eyes focus on the source of the voice
across the room was a man
he looked as if he was nothing but skin and bone.
Then you noticed the scar... it ran down his arm
It was an open wound,
but wasn't bleeding just black.
The man followed your eyes
"Ah so you noticed, yes I am forsaken."
1) Remain quit
2) Ask about the forsaken
3) Quickly check your body for scars
4) Scream
Please choose one:"""
answer = raw_input("> ")
if answer == "1":
print '"You don\'t talk much"'
cell_name()
elif answer == "2":
print '"Not sure, all I know is if you have a scar like this"'
print '"They throw you in jail."'
cell_name()
elif answer == "3":
print '"Don\'t worry I already checked you."'
cell_name()
elif answer == "4":
print '"Shut up! Jeez pansy."'
cell_name()
else:
print "Pick one of the numbers"
cell()
def cell_name():
print "Well whats your name kid."
name = raw_input("> ")
print "Alright, nice to meet ya %r" % name
print "Well my name is Esman."
destroyed_cell()
def destroyed_cell():
print """
All of a sudden you hear a rumble...
rumble...
rumble...
silence.
"What do you suppose that wa..."
Crash!
Huge parts of the ceiling had fallen down
one had nearly crushed you
instead it had landed perfectly right next to you
the force was enough to break through the floor
you turn to check on Esman
But a huge piece of the ceiling had landed on him
1) Stare in bewilderment
2) try and help him
3) he's a dead man, leave him
Please choose one:"""
answer = raw_input("> ")
if answer == "1":
print "Hurry kid get out of here."
elif answer == "2":
print "It's no use you have to save yourself"
elif answer == "3":
print "Run!"
else:
print "Pick one of the numbers"
cell()
I tried your code at http://repl.it/languages/Python and it works