Weird python syntax error with variable [closed] - python

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 5 years ago.
Improve this question
I keep getting a syntax error on line 10 that says
Traceback (most recent call last):
File "main.py", line 5, in <module>
user = input("Choose a number")
File "<string>", line 1
python main.py
^
I can't figure it out. Can anyone help?
import random
number = random.randint(1, 20)
attempt = 5
def game():
global attempt
attempt -= 1
if attempt > 0:
if int(user) > number:
user = input("Choose a number")
print("Choose a smaller number\n " + (str(attempt) + " tries left"))
game()
elif int(user) < number:
print("Choose a larger number\n "+ (str(attempt) + " tries left"))
game()
elif int(user) == number:
print ("You guessed the number ")
else:
print("CONGRATULATIONS ")
game()

First, this is a run-time error, not a syntax error.
The problem is actually in the previous line: you've tried to use the value of user before it has one. You have to fix this before you can continue debugging your program. You need to get the user's first number before you can test it.

Problem A
I can't help but notice that your traceback message doesn't align with the code you have provided. It seems as though you already have the user variable assigned before defining and calling the game() function.
Solution A
If that is the case, try removing that line and apply the changes Prune recommended for you in the other answer. This will solve the code related problems in the program.
Problem B
However, the traceback also mentions that on line 1 you have python main.py. This is most likely caused by the way you are running the script.
Solution B
Try running it instead in the IDLE (distributed with Python) or Terminal / Command Prompt (depends on your OS) if not doing so already.
Last Resort
If the problem still arises, try running the snippet of code you included in the question by itself to see if it is functional ( add on Prune's revisions with it ).
Since the revised snippet should work, any errors that occur is definitely caused by how the code is ran. If no errors occur then look through your original source code for anything else that might be causing problems.
Good luck!

Related

Not instantly getting out a loop with break [closed]

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 1 year ago.
Improve this question
When I run this easy program and want to exit it, I need to type exit 2 times (at line 7).
def registration():
def username_registration():
entering_username = True
while entering_username:
print("Type exit to leave the registration.")
usernam_from_registration = input("Enter username: ")
if usernam_from_registration == "exit":
break
lenght_usernam_from_registration = len(usernam_from_registration)
if lenght_usernam_from_registration > 15:
print("too long")
else:
return usernam_from_registration
username_registration()
print(username_registration())
registration()
Why is this and how can I make it so I only need to write it one time?
This is because you are calling the username_registration() function twice.
username_registration()
print(username_registration())
The first time you call it, nothing happens because you are not doing anything with the result.

Second iteration of While Loop creates an error [closed]

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 2 years ago.
Improve this question
I am very new to Python, I have searched and cannot find answer. Thank you in advance.
I purposely type the incorrect answer and it responds properly - prompts me to give input again.
I now type the correct answer and it responds with error (my code is below error)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
in
54 print("Enter Y/N:")
55 answer = input()
---> 56 answer = input.upper()
57
58 print("Great! Lets get started.")
AttributeError: 'function' object has no attribute 'upper'
`# intro text
print("Are you ready to create a super hero with the super hero generator 3000?")
# Ask for input / use input() to take it / use upper() to adjust text
print("Enter Y/N:")
answer = input()
answer = answer.upper()
# adding while loop to condition input(answer)
while answer != "Y":
print("Sorry, but you have to choose Y to continue.")
print("Enter Y/N:")
answer = input()
answer = input.upper()
print("Great! Lets get started.") ```
Change your code to:
while answer != "Y":
print("Sorry, but you have to choose Y to continue.")
print("Enter Y/N:")
answer = input()
answer = answer.upper()
input() function has no function upper(), you want to call upper() on answer.

How can I define a Boolean to a variable? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Closed 3 years ago.
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.
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.
Improve this question
I am trying to make a calculator. I have the code that does the operations working, but I am trying to allow the user to keep the calculator running without having to rerun the code. i an trying to assign a Boolean to variable, but python keeps telling me there is a name error, which is the the variable is not defined. Can you please help me?
Thank you in advance.
I have tried to change the available name but it doesn't do anything.
The code stopped working when it got to the while run == true line.
else:
print('Invalid operator, please run code again')
run = True
while run == True:
print(' do you need another problem solved? y/n')
if input() == y:
run = True
elif input() == n:
run = False
I expected the code to ask me if I need another problem solved, but there is a name error.
If the error is complaining about y or n it's because you need to surround it with quotes
if input() == "y":
run = True
Also, run == True is not needed
while run:
does the trick
else:
print('Invalid operator, please run code again')
run = True
while run:
print(' do you need another problem solved? y/n')
inp=input()
if inp == 'y':
run = True
elif inp == 'n':
run = False
you have used input 2 times so your code will wait 2 times for input, use input() once.

Python Scope and Nonlocal Issues [closed]

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 7 years ago.
Improve this question
I'm new to Python and a little confused with the whole nonlocal thing. Here's the problem snippet of code:
positon = 0b0
while True:
pos_choice = input("\tPlease enter your choice: ").lower()
if pos_choice == '1':
position = position | Baseball.pitcher
break
elif pos_choice == '2':
position = position | Baseball.catcher
break
elif (pos_choice == 'd') and (position != 0b0):
break
elif (pos_choice == 'd') and (position == 0b0):
print("\tChoose a position.")
else:
print("Invalid choice.")
print(position)
So this throws me :
Traceback (most recent call last):
File "driver.py", line 252, in <module>
load_student()
File "driver.py", line 142, in load_student
position = position | Baseball.catcher
UnboundLocalError: local variable 'position' referenced before assignment
Based upon what I've read on answers to other questions, the problem would be because the problematic "position" is nested two loops in from the original call (is that right?).
My main problem is that I can't figure out how to bind the two "position"s using nonlocal, though I have tried various solutions to no avail. Also, is using nonlocal a taboo like it is when using global? Thanks for the help!
You have a typo in your code. In the declaration, the variable is spelled positon instead of position.
There is a simple typo in your first line.

Python: while loop that quits program if not completed within specified limit [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question appears to be off-topic because it lacks sufficient information to diagnose the problem. Describe your problem in more detail or include a minimal example in the question itself.
Closed 9 years ago.
Improve this question
Python Question: i need to run a program that asks for a password but if the wrong answer is input three times the user is thrown out of the program i can run it in a while loop but cant get it to quit if the wrong password is entered.
Thanks for your help
Adding an approximation of how I'd do it, in the absence of an example containing the problem. else on a for loop will only execute if you did not break out of the loop. Since you know the max number of times to run the loop is 3 you can just use a for loop instead of a while loop. break will still break you out early.
for _ in range(3):
if raw_input("Password:") == valid_passwd: # really should compare hashed values (as I shouldnt have passwords stored in the clear
print "you guessed correctly"
break
print "you guessed poorly"
else:
print "you have failed too many times, goodbye"
sys.exit(1)
# continue on your merry (they got the right password)
How about sys.exit()
>>> import sys
>>> guess = False
>>> if guess:
... pass
... else:
... sys.exit()
http://docs.python.org/3/library/sys.html

Categories