On Mon, Apr 28, 2014 at 10:32:06AM -0700, Stephen Mik wrote: > I must be doing something very wrong. The program is supposed to > run a main loop ,for control of the program. The program DOES print > out the prompts before the While Loop, but when it comes to a variable > named"smv_guessNumber" the program DOES NOT prompt for the input for > "smv_guessNumber" as it should. It is a mystery to me as to why the > program will not get to the "smv_guessNumber=int(input("Think out a > first guess:")". I am mystified why it doesn't reach that point in the > program!
That was a tricky one! It took me a while to see it, but the problem comes from three factors. Firstly, these two lines: smv_grandCounter=int(input("Enter a 1 to play or 0 to exit: ")) while(smv_grandCounter=="1"): In the first line, you get input from the user, either "1" or "0". User input is a string, then you convert to an int. But in the second line, you compare it to the string "1". So regardless of whether the user types "1" or "0", the while loop is ALWAYS skipped: int 1 == "1" returns False int 0 == "1" returns False and the while loop never runs at all. I recommend you either remove the call to int(), and keep smv_grandCounter as a string, or you change the while condition to while smv_grandCounter == 1: (But don't do both!) Secondly, since the while loop is skipped, the line which initialises the smv_guessNumber variable: smv_guessNumber= int(input("Take a guess!")) also gets skipped. So smv_guessNumber doesn't get a value. Thirdly, you haven't indented the "Number Identification Loop". The game logic *should* be: # Game loop while you want to play a game: set up the next game # Number Identification Loop while your guess is not equal to the number: ... The number identification loop only happens while you want to play a game. But you have it like this by mistake: # Game loop while you want to play a game: set up the next game # At this point, the game loop has finished, # so you no longer wish to play # Now you start the Number Identification Loop while your guess is not equal to the number: ... You need to take this line: while(smv_guessNumber!=smv_pickNumber): and all the code which belongs to it, and indent it one extra block, so it is considered *inside* the "do you want to play a game?" loop. Once you have fixed those issues, you can then continue your testing. By the way, what is the meaning of the mysterious "smv_" prefixes on all your variables? Please don't tell me that stands for "Stephen Mik Variable." It seems to me that *every* variable has the same smv_ prefix, and so that prefix doesn't have any meaning. It would be like me deciding to add "blah" to the beginning of every word: blahit blahwould blahbe blahlike blahme blahdeciding blahto blahadd "blahblah" blahto blahthe blahbeginning blahof blahevery blahword The "blah"s are just meaningless noise. When programming, your code should all carry its weight. Programming is hard enough without sticking "blah" at the beginning of every word! Variable names should describe what the variable stands for, or at least follow some common convention like "x" for mathematical quantities. If "smv_" doesn't carry it's weight in helping your code be more easily understood, you should remove it. -- Steven _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor