New user needs help
John
pantsmetalkid at charter.net
Sat Feb 21 00:59:50 EST 2004
Thank you very much. This solved the problem. I now see where the problem
was. This was driving me bonkers! I'm sure I will post here frequently so
thanks in advance for everyone's help.
"omission9" <omission9 at invalid.email.info> wrote in message
news:64CZb.19719$wD5.7887 at nwrddc03.gnilink.net...
> John wrote:
>
> > I am new to using Python. Everytime I run this program it prints "The
lowest
> > common factor is 0", no matter what numbers I use. Can anybody see
anything
> > wrong with my program? Thanks in advance.
> >
> >
> >
> > def getnum1(a):
> > a = input("What is the first number?")
> > if a == 0:
> > getnum1(a)
> > def getnum2(b):
> > b = input("What is the second number?")
> > if b == 0:
> > getnum2(b)
> > def euclid(num1, num2, num3, num4):
> > if num1 < num2:
> > num3, num4 = num1, num2
> > num1, num2 = num4, num3
> > euclid(num1, num2, num3, num4)
> > elif num2 != 0:
> > num3, num4 = num1, num2
> > num1 = num4
> > num2 = num3 % num4
> > euclid(num1, num2, num3, num4)
> > else:
> > print "The lowest common factor is: ", num1
> > a = 0
> > getnum1(a)
> > b = 0
> > getnum2(b)
> > x, y = 2, 100
> > euclid(a, b, x, y)
>
> This is a nice simple example of what is called "scope" and how it can
> trick a beginner.
> Put as simply as possible,"a" and "b" are actually defined twice. Once
> "locally" in the getnum functions and another time "globally" . When you
> set a and b to the user input in the functions the other a and b have no
> idea about this assignment. Below is a slight revision which return the
> a and b set by the user back to where they are called. By putting a
> simple print statement in the script you can see where the values are
> set and that can help you.
> I hope that helps. There is probbaly a couple of other changes you could
> make as well but nothing too major, in my opinion.
>
>
> def getnum1(a):
> a = input("What is the first number?")
> if a == 0:
> getnum1(a)
> return a
> def getnum2(b):
> b = input("What is the second number?")
> if b == 0:
> getnum2(b)
> return b
> def euclid(num1, num2, num3, num4):
> print num1, num2, num3, num4
> if num1 < num2:
> num3, num4 = num1, num2
> num1, num2 = num4, num3
> euclid(num1, num2, num3, num4)
> elif num2 != 0:
> num3, num4 = num1, num2
> num1 = num4
> num2 = num3 % num4
> euclid(num1, num2, num3, num4)
> else:
> print "The lowest common factor is: ", num1
> a = 0
> b = 0
> a=getnum1(a)
> b=getnum2(b)
> x, y = 2, 100
> euclid(a, b, x, y)
>
More information about the Python-list
mailing list