Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Horribly noobful string question

Reply
Thread Tools

Horribly noobful string question

 
 
SeNTry
Guest
Posts: n/a
 
      12-13-2005
Hi Everyone,

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,

elif guess == <string>
print "that's not a number! please guess again!"

I know that's not right, but can you see what I'm looking for and offer a
suggestion?

Thanks in advance all.


 
Reply With Quote
 
 
 
 
Fredrik Lundh
Guest
Posts: n/a
 
      12-13-2005
"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!"
...

isdigit returns true if the string contains nothing but digits:

>>> help(str.isdigit)


isdigit(...)
S.isdigit() -> bool

Return True if there are only digit characters in S,
False otherwise.

if you're using some other way to read user input, let us know.

</F>



 
Reply With Quote
 
 
 
 
Xavier Morel
Guest
Posts: n/a
 
      12-13-2005
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
 
Reply With Quote
 
SeNTry
Guest
Posts: n/a
 
      12-15-2005

"Xavier Morel" <(E-Mail Removed)> wrote in message
news:dnn2g8$l12$(E-Mail Removed).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)


 
Reply With Quote
 
SeNTry
Guest
Posts: n/a
 
      12-15-2005
SRY, that last bit of code got messed up. Hopefully it will look right
now...

#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"
elif guess < number:
print "nope, a little higher!"
else:
print "no, a little lower!"

def playagain(again):
again=""
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=24
loopfunc(True)

>
>



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Should lenses be allowed to claim a specific f-stop speed if theyvignette, horribly? RichA Digital Photography 6 03-31-2013 10:00 PM
Britain bans HORRIBLY air-brushed ad featuring Julia Roberts RichA Digital Photography 17 08-06-2011 06:06 AM
Yahoo email SUX!!! horribly dh@. Computer Information 4 10-01-2010 03:43 PM
"gem install mysql" failing horribly on OS X leaopard Doug Livesey Ruby 2 11-16-2009 09:17 AM
horribly impossible debugging task Ara.T.Howard Ruby 11 09-22-2004 06:19 PM



Advertisments