[EMAIL PROTECTED] wrote: > hello, > > Could I gather all of the values from print x into a string or a range? > Since, I am not familiar with lists yet.
Here is a simple example of gathering values into a list and making a string: >>> r=[] # Start with an empty list >>> for x in range(3): # x will be 0, 1, 2 in sequence ... r.append(str(x*x)) # Put x*x (as a string) onto r ... >>> r ['0', '1', '4'] >>> ', '.join(r) # make a single string by joining the elements of r with ', ' '0, 1, 4' Kent > > > def main(): > x = input("Please enter a positive starting value: ") > while x != 1: > if x%2 == 0: > x = x/2 > else: > x = x*3+1 > print x > print "The Syracuse sequence of your starting value is:", x > > main() > > > > > ----- Original Message ----- > From: "Frank Bloeink" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Friday, October 28, 2005 5:06 AM > Subject: Re: [Tutor] syracuse sequence (collatz or hailstone) > > > >>Hey, >> >>your code seems almost alright to me, except that in your case it's only >>printing the last number of your sequence, which obviously is not what >>you want. Quick fix would be to insert a line "print x" just below else >>statement: >>---snip-- >> else: >> x=x*3+1 >> print x >>---snip >>This should make clear where the error is: You are just calculating, but >>not printing the sequence! >>If you want to leave the output to the end of the program you could as >>well gather all the calculated values in a list or similar structure and >>then print the contents of the list.. >> >>hth Frank >> >>On Fri, 2005-10-28 at 01:22 -0400, [EMAIL PROTECTED] wrote: >> >>>Hello >>> >>>I am trying to create a program that will calculate the syracuse sequence >>>which is also known as collatz or hailstone. the number that is input by >>>the user may be either even or odd. the number goes through a series of >>>functions which are x/2 if the number is even and 3x+1 if the number is >>>odd. it keeps doing so until the number reaches 1. An example would be if >>>the user inputed 5 they should recieve: 5, 16, 8, 4, 2, 1 as the sequence >>>for the value that they started with. My code currently just prints a 1 >>>and none of the numbers that would have preceded it. any ideas on how I >>>could get the program to not do this would be greatly appreciated. >>> >>> >>>def main(): >>> try: >>> x = input("Please enter a starting value: ") >>> while x != 1: >>> >>> if x%2 == 0: >>> x = x/2 >>> else: >>> x = x*3+1 >>> >>> except ValueError, excObj: >>> msg = str(excobj) >>> if msg == "math domain error": >>> print "No negatives or decimals." >>> else: >>> print "Something went wrong." >>> >>> >>> >>> print "The Syracuse sequence of your starting value is:", x >>> >>>main() >>> >>> >>>_______________________________________________ >>>Tutor maillist - Tutor@python.org >>>http://mail.python.org/mailman/listinfo/tutor >> >> >> > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > > -- http://www.kentsjohnson.com _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor