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 - [email protected]
>>>>http://mail.python.org/mailman/listinfo/tutor
>>>
>>>
>>>
>>
>> _______________________________________________
>> Tutor maillist - [email protected]
>> http://mail.python.org/mailman/listinfo/tutor
>>
>>
>
> --
> http://www.kentsjohnson.com
>
> _______________________________________________
> Tutor maillist - [email protected]
> http://mail.python.org/mailman/listinfo/tutor
>
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor