Horribly noobful string question
SeNTry
wsw333 at yahoo.com
Wed Dec 14 20:17:47 EST 2005
"Xavier Morel" <xavier.morel at masklinn.net> wrote in message
news:dnn2g8$l12$1 at aphrodite.grec.isp.9tel.net...
> Fredrik Lundh wrote:
>> "SeNTry" wrote:
>>
>>> My first post here as I just begin to learn programming in general and
>>> python in particular. I have all the noobie confused questions, but as
>>> I
>>> work thru the tutorials I'm sure I'll find most my answers.
>>>
>>> This one is eluding me tho... I am working in the tutorials, writing
>>> scripts
>>> as presented and then modifying and expanding on my own to try to learn.
>>> I'm working with one that asks the user to 'guess a number I'm
>>> thinking',
>>> and with simple while loop, flow control and operands, returning an
>>> answer
>>> to guess again or you got it. I've added a 'playagain' function I've
>>> got
>>> working, but what I want is to stop the program from crashing when
>>> someone
>>> enters a string value instead of a int value. I know strings are
>>> immutable,
>>> and they can be changed to an int equivalent, but I just want the script
>>> to
>>> recognize the input as a string and print a simple "that's not a number,
>>> try
>>> again' type of message. I can't find the syntax to include in the
>>> if/elif/else block to include a line that says something like,
>>
>> assuming you're using raw_input() to get the guess, you always
>> have a string (in python's sense of that word).
>>
>> what you seem to want is to check if the string contains a number
>> or not. here's one way to do this:
>>
>> guess = raw_input("make a guess: ")
>> if guess == secret:
>> print "congratulations!"
>> elif not guess.isdigit():
>> print "that's not a number! please guess again!"
>> ...
>>
>
> that, or just write something like
>
> guess = raw_input("Make your guess > ")
> try:
> if int(guess) == secret:
> # ok
> except ValueError:
> # no good
>>
>> assuming you're using raw_input() to get the guess, you always
>> have a string (in python's sense of that word).
>>
>> what you seem to want is to check if the string contains a number
>> or not. here's one way to do this:
>>
>> guess = raw_input("make a guess: ")
>> if guess == secret:
>> print "congratulations!"
>> elif not guess.isdigit():
>> print "that's not a number! please guess again!"
>> ...
>>
>
> that, or just write something like
>
> guess = raw_input("Make your guess > ")
> try:
> if int(guess) == secret:
> # ok
> except ValueError:
> # no good
Sry for late reply, I've been out of town. Thanks for the responses, I'm
just sitting down to try these out. I'm kind of surprised there's not a
more obvious way to handle simply identifying strings.
Anyways, here's the original code snippet from a tut. and then my modified
effort. I was using input instead of raw_input. Looking at it now I'm not
even sure why I did some of the stuff I did HAHA! I just made functions for
convenience and practice. I'm sure it's laughable, but maybe you can see
what I was doing and tell me what other errors I made just for learning...
Everything seems to work well, except when the playagain function in my
modified code gets a '2' input to quit, it prints 'aw, ok bye then' and then
the next line is the print from the loopfunc if statement, "looping while
statement now complete". If I remove the again="" line in the playagain
function, it prints 2 times... wierd. I put this in there because I
suspected that the variable was remaining and wanted to clear it at the
start of the function, but I've now read that the variable in a function is
destroyed when the function ends... is this right? My brain hurts...
ORIGINAL
number = 24
guess = int(raw_input('Enter an integer : '))
if guess == number:
print 'Congratulations, you guessed it.' # New block starts here
print "(but you do not win any prizes!)" # New block ends here
elif guess < number:
print 'No, it is a little higher than that' # Another block
# You can do whatever you want in a block ...
else:
print 'No, it is a little lower than that'
# you must have guess > number to reach here
print 'Done'
# This last statement is always executed, after the if statement is
executed**MODIFIED**#define two functions first, then use them.def
loopfunc(looping): while looping: guess= input("guess a number.
see if you can guess what I'm thinking") if guess == number:
print "you got it!" looping=False playagain("")
print "looping while statement now complete" #for clarification when running
elif guess < number: print "nope, a little higher!" else:
print "no, a little lower!"def playagain(again): again="" #removing
this line make the 'looping while..' statement print 2 times again=
input("would you like to play again? type '1' for yes and '2' for no") if
again==1: print "great!" loopfunc(True) elif again==2:
print "aww! Ok, bye then" return else: print "that's not a
1 or a 2! Try again!" playagain("")number=24loopfunc(True)
More information about the Python-list
mailing list