On 06/03/18 18:12, Roger Lea Scherer wrote:
> I know I don't have to apologize, but I am so independent I hate asking for
> help and you guys and gals have been so helpful that now that I'm stuck
> again I'm sorry I have to. 

Thats not a problem and, in programming, is usually seen as
a strength not a weakness. Nobody likes to debug somebody
else's bad code, it's much better to get advice and write
good code first time! Independence is the fault, not

> All I want to do (famous last words) is randomize the color of the pen when
> the ciphers are created, but when the ciphers are created, the color
> remains black. 

You do seem to have a liking for writing an awful lot of unnecessary
code. Have you come across the concept of functions? They allow you
to take common code and encapsulate it in a single call.

> if digits[-1] == "1":
>     pu()
>     goto(0, 100)
>     seth(90)
>     pd()
>     fd(35)
> if digits[-1] == "2":
>     pu()
>     goto(0, 65)
>     seth(90)
>     pd()
>     fd(35)


def f(y):
    goto(0, y)

if digits[-1] == "1":
if digits[-1] == "2":

And ideally you use a more meaningful name than 'f'!
Maybe reposition() or similar?

The principle is known as DRY in software engineering:
- Don't Repeat Yourself

Also we already (I think it was for you) pointed
out that using an int() conversion with try/except was
easier and more reliable that a regex.
Its also much less code. So unless you really enjoy
practising your typing, it's easier to do something like:

d = input("Enter an integer less than 10,000 greater than 0:  ")
try: int(d)
except: # they are not digits so deal with it

# now use d knowing it is all digits.

> The comments below colormode are things I've tried as well.
> I include all the code in case you want to run the program.
> So if you could please help like you do, that would be great and greatly
> appreciated. Thank you.
> ----------------------------
> from turtle import *
> import re
> import random
> # use turtle to draw ciphers of the Cistercian monks
> digits = input("Please enter an integer less than 10,000 greater than 0:  ")
> r = random.randrange(0, 255)
> g = random.randrange(0, 255)
> b = random.randrange(0, 255)

You set these values once. And never change them.

> colormode(255)

> ##reddish = random.randrange(255)
> ##greenish = random.randrange(255)
> ##bluish = random.randrange(255)
> ##pencolor(reddish, greenish, bluish)

You don't draw anything so how do you know what colour is set?
You have to draw a line to see the color.

> # pencolor(random.randrange(255), random.randrange(255),
> random.randrange(255))
> pencolor(r, g, b)

Same goes for these.

> mode("logo")   # resets turtle heading to north
> speed(0)
> ht()
> fd(100)

Now you draw something, what color is it?
(although you might need a pd() to force the pen on to the canvas)

> # if statements for the ones position
> if digits[-1] == "1":

See the comments about functions above...
And only do the extraction once:

last = d[-1]
if last == "1":
elif last == "2):
elif last = "3"

> if digits[-1] == "3":
>     pu()
>     goto(0, 100)
>     seth(135)
>     pd()
>     fd(50)

I see a new value in the last line so maybe f becomes

def f(y,d):
     goto(0, y)

It still saves a heck of a lot of typing!

> if digits[-1] == "5":
>     pu()
>     goto(0, 100)
>     seth(90)
>     pd()
>     fd(35)
>     rt(135)
>     fd(50)

And here you add two lines so either just tag the two
lines after f or define a new function:

def g(y,d,angle,d2):

I strongly suspect we can simplify this a lot more
but that should be a start.

But as to the colors, you only draw one line and you
only set the color once so it's hard to see how
randomising anything is going to be useful.

Alan G
Author of the Learn to Program web site
Follow my photo-blog on Flickr at:

Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:

Reply via email to