There is an issue with the program when the user correctly guesses the number. The program should end when the break statement executes in the while loop found in main(), but instead it times out.
import random
def main():
level = get_level()
number = generate_random_number(level)
while True:
guess = get_guess()
if check_guess(number, guess) == False:
continue
else:
break
def get_level():
while True:
level = input("Level: ")
try:
int(level)
except ValueError:
continue
if int(level) <= 0:
continue
else:
return int(level)
def generate_random_number(level):
number = random.randint(1, level)
return number
def get_guess():
while True:
guess = input("Guess: ")
try:
int(guess)
except ValueError:
continue
if int(guess) <= 0:
continue
else:
return int(guess)
def check_guess(number, guess):
if guess > number:
print("Too large!")
return False
if guess < number:
print("Too small!")
return False
if guess == number:
print("Just right!")
return True
main()
The code looks like it should run fine. How are you executing it and what makes you think it “times out”?
It’s for CS50P which uses a customized VS Code. It has an automated code checker which I ran when I was done.
How is that checker configured?
It might be doing something like this:
import student_module student_module.main()
and because you’re already invoking
main
as the module is imported, it’s getting stuck the second time around. Maybe add some indicativeprint
at the entrypoint to your main function.Another reply in here has supplied the standard idiom for making a module executable:
if __name__ == "__main__": main()
What duh eh does
standard idiom
mean?https://en.wikipedia.org/wiki/Programming_idiom
So this term is vague and abstract. Really not a specific term or grouping of related things.
The actual terminology
That standard idiom is called, process guard or simply guard. Learn about this term when doing anything involving multiprocessing.
https://labex.io/tutorials/python-how-to-pass-arguments-in-python-multiprocessing-430780
So it’s totally not for what its being described as. Or that’s an oversimplification with a loss of vital details of it’s actual purpose.
It could be worse
When don’t know the name for something, Call it stuff!. Ya know, when really suack at naming things, be unrepentant! Stuff is as bad of a term i could come up with. Means didn’t know how to describe it to accurately relate what it is or does, without being vulgar; out of fear the typos author left an Easter egg which is best left lie.
Used this term once, for a SQLAlchemy non-request based router implementation, the Session (term already taken) i call SessionStuff. Doesn’t that just scream competence and authoritative implementation?
Regretted immediately and still do. Cuz session seems to have three different contexts / meanings.
Oh shit! Used the term, stuff. That’s code prefer to not even read. That’s a thing of nightmares that haunts our collective waking moments.
The idiom allowed it to pass the checker’s tests! Thanks for your help!
You picked up an STD from mvirts. That dodgy terminology has been passed on and added to your lexicon.
South Park suggested the cure for this, eat a banana. Life doesn’t have to make sense, roll with it.
Quickly taking a shower was oddly never suggested.
Do you know how to use breakpoints? Put one on “Just right!” and then step through it.
Edit: I just ran the code and it exits properly. It’s probably your customized VS Code . Which command is it using to run your code?
Anti Commercial-AI license
try running the code outside the special editor, just
python3 whatever_file_the_code_is_in.py
. if it works as it should, then something is wrong with the environment you have been provided.It seems to run fine. You should likely as a TA or something as this appears to be something specific to your environment.