[Tutor] counting number of inputs (EARLIER VERSION SENT ACCIDENTLY)

Python python at venix.com
Wed May 3 18:18:41 CEST 2006


(Tip: Best to use reply-to-all when responding to an email on the list)
On Tue, 2006-05-02 at 21:34 -0400, MICHELLE EVANS wrote:
> number1 = int(raw_input("Run number 1 (-1 to end) : "))
> number2 = int(raw_input("Run number 2 (-1 to end) : "))
> number3 = int(raw_input("Run number 3 (-1 to end) : "))
> number4 = int(raw_input("Run number 4 (-1 to end) : "))
> number5 = int(raw_input("Run number 5 (-1 to end) : "))
Good.  You collect the string from raw_input and convert it to an
integer.

This will prompt for 5 inputs, but it is missing any logic to actually
break if -1 is entered.  With a language like BASIC, you could stick in
tests sort of like:
	if number1 == -1 goto done:
BUT Python does not have a goto.  So we actually need some "flow
control" around the block of code where you collect inputs.

while blocks process an indefinite number of times while a test
condition is True.

for blocks iterate through a sequence until they reach the end.  By
providing a sequence with the correct count, you can repeat the block
the correct number of times.  The range (and xrange for big sequences)
functions provide a sequence of integers that can be used conveniently
with for.

The easiest way to fix your code above would be something like:
ask_for_number = True
while ask_for_number:
	number1 = ....
	if number1 == -1: break
	...
	number5 = ...
	ask_for_number = False

HOWEVER, that is not a good approach in the long run.

A better approach is to have a single container to hold all of the
inputs.  For this, Python provides lists.  Rather than have 5 separate
variables, use a single list variable to hold all of the inputs.  Then
use a "for block" to ask for the input and put the result into the list.
You already know how to convert the input from a string to a number.

If you have trouble figuring out lists and for blocks, ask for help.

(Sorry about the extra email.  I forgot and used ad editor hot-key combo
in my email program which sent the email.)


> 
> 
> # The following will sum the numbers and then print the answer
> sum = number1 + number2 + number3 + number4 + number5
> print
> print "The total number of parts produced was:", sum,"."
> 
> I need this to ask the user to enter their number per each run.  That is why
> I have 5 different input numbers.  I need this break if a -1 is entered.
> Would I use "if-else" to break this if -1 is entered?  I need to be able to
> count the number of lines entered.
> 
> Thanks
> Rick
> 
> 
> ----- Original Message ----- 
> From: "Python" <python at venix.com>
> To: "MICHELLE EVANS" <evans1018 at verizon.net>
> Cc: "Tutor Python" <tutor at python.org>
> Sent: Tuesday, May 02, 2006 7:56 PM
> Subject: Re: [Tutor] counting number of inputs
> 
> 
> > On Tue, 2006-05-02 at 19:25 -0400, MICHELLE EVANS wrote:
> > > I am trying to count the number of times a positive number is entered
> > > from the user.  But, the program must stop after 5 user inputs or a
> > > negative number.
> > >
> > > Can anyone help.
> > Yes, but you need to help yourself also.
> >
> > Do you know how to get input from the user?
> > Do you know how to count things in Python?
> > Do you know how to test a number to see if it is positive or negative?
> >
> > Why don't you post your code for any part of this problem and explain
> > how it is supposed to work and where you are having difficulty.  If
> > necessary, review some of the tutorials to get some pointers on writing
> > Python programs.
> >
> > We're happy to help you learn, but do not want to simply write your
> > program for you.
> >
> > > Rick
> > > _______________________________________________
> > > Tutor maillist  -  Tutor at python.org
> > > http://mail.python.org/mailman/listinfo/tutor
> > -- 
> > Lloyd Kvam
> > Venix Corp
> >
> >
> 
-- 
Lloyd Kvam
Venix Corp



More information about the Tutor mailing list