would this be a possible use of a list and appending even though I recieve an error from it:
def main(): x = [1] x[0] = input('enter an int to start your syracuse sequence\n') while not isinstance(x[0], int): x[0] = input('no, please enter an int to start your syracuse sequence\n') while x[-1] != 1: if ((x[-1] % 2) == 0): x.append(x[-1] / 2) else: x.append((3 * x) + 1) print len(x), x print "The Syracuse sequence of your starting value is:", x main() line 10, in main x.append((3 * x) + 1) TypeError: can only concatenate list (not "int") to list >>> > [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 > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor