[Tutor] Tutor Digest, Vol 94, Issue 53

rog capp beetlebane at gmail.com
Thu Dec 15 03:15:15 CET 2011


On Wed, Dec 14, 2011 at 6:03 PM,  <tutor-request at python.org> wrote:
> Send Tutor mailing list submissions to
>        tutor at python.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>        http://mail.python.org/mailman/listinfo/tutor
> or, via email, send a message with subject or body 'help' to
>        tutor-request at python.org
>
> You can reach the person managing the list at
>        tutor-owner at python.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Tutor digest..."
>
>
> Today's Topics:
>
>   1. Re: Tuple: Am I Understanding This Correctly? (Alan Gauld)
>   2. ctype exceptions.ValueError for function call
>      (Santhirakumaran, Gokul)
>   3. while loops (rog capp)
>   4. Re: while loops (Steven D'Aprano)
>   5. Re: while loops (Dave Angel)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Wed, 14 Dec 2011 18:25:33 +0000
> From: Alan Gauld <alan.gauld at btinternet.com>
> To: tutor at python.org
> Subject: Re: [Tutor] Tuple: Am I Understanding This Correctly?
> Message-ID: <jcapmt$7ed$1 at dough.gmane.org>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> On 14/12/11 15:48, Homme, James wrote:
>>  Am I explaining how this works correctly?
>
> You are not really explaining *how* it works, just saying what it does.
> What you are doing is sensible iff you have many places where the tuple
> is useful. In the specific case I'd personally just create the tuple at
> the point of use:
>
>> finish = (user_name, prompt)
>> likes = raw_input("Do you like me %s?\n%s" % finish)
>
> likes = raw_input("Do you like me %s?\n%s" % (user_name, prompt))
>
> Since it saves the reader referring back to the definition
> of finish (which is an odd nanme for user/prompt data IMHO).
>
>> # Use the tuple repeatedly when asking other questions.
>
> But, if you are using the tuple repeatedly then it starts
> to make sense.
>
> --
> Alan G
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
>
>
>
> ------------------------------
>
> Message: 2
> Date: Wed, 14 Dec 2011 21:15:38 +0000
> From: "Santhirakumaran, Gokul"
>        <Gokul.Santhirakumaran at christiedigital.com>
> To: "'tutor at python.org'" <tutor at python.org>
> Subject: [Tutor] ctype exceptions.ValueError for function call
> Message-ID:
>        <52784758373D504EB891CD133621A25B0AA51582 at cktexmb01.cds.int>
> Content-Type: text/plain; charset="us-ascii"
>
> Hi,
>
> I'm trying to use a SDK(dll file) with python ctypes to take measurement from a spectrometer. I some how got the deceive connected and took the measurement , but when I try to call one of its calculation function I'm getting  the "exceptions.ValueError: Procedure probably called with not enough arguments (8 bytes missing)" error.
>
> I believe I have called the function with proper arguments and data types. I would really appreciate some help.
>
> The Function:
>
> mydll = ctypes.windll.LoadLibrary("D:\\WILD2\\tools\\WildVerification\\lib\\jeti_core.dll")
> device = ctypes.c_int()
> dvError = mydll.JETI_OpenDevice(0,ctypes.byref(device))
>
> X_value = ctypes.c_float()
> Y_value = ctypes.c_float()
> Z_value = ctypes.c_float()
>
> dvError = mydll.JETI_CalcXYZ(device,ctypes.byref(X_value),ctypes.byref(Y_value),ctypes.byref(Z_value))
>
> Function Documentation:
>
> 3.112 JETI_CalcXYZ
> This function returns the calculated tristimulus XYZ.
> 3.112.1 Prototype
> DWORD JETI_CalcXYZ (DWORD dwDevice, FLOAT *fX, FLOAT *fY, FLOAT *fZ)
> 3.112.2 Parameters
> Input
> Name               Type                             Description                              Call
> dwDevice          DWORD                       Handle to a device as                By value
> returned by
> JETI_OpenDevice
>
> fX                     FLOAT*                         pointer to a variable                   By reference
> where the tristimulus X
> will be stored
>
> fY                     FLOAT *                        pointer to a variable                   By reference
> where the tristimulus Y
> will be stored
>
> fZ                     FLOAT *                        pointer to a variable                   By reference
> where the tristimulus Z
> will be stored
>
> -
> Gokul Santhirakumaran
> Electrical Engineer(Co-op)
>
> CHRISTIE
> 809 Wellington St. N.
> Kitchener, ON, Canada N2G 4Y7
> PH: +1 519-744-8005 x7313
> www.christiedigital.com<http://www.christiedigital.com>
>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://mail.python.org/pipermail/tutor/attachments/20111214/7b01e759/attachment-0001.html>
>
> ------------------------------
>
> Message: 3
> Date: Wed, 14 Dec 2011 17:41:24 -0500
> From: rog capp <beetlebane at gmail.com>
> To: tutor at python.org
> Subject: [Tutor] while loops
> Message-ID:
>        <CAKP55S=Jes4FcOcY7hXi_DnG2ywSF2mKEQz_9qzzTF63edhVtA at mail.gmail.com>
> Content-Type: text/plain; charset=ISO-8859-1
>
> # Guess my number
> #
> # The computer picks a random number between 1 and 100
> # The player tries to guess it and the computer lets
> # the player know  if the guess is to high, to low
> # or right on the money
>
> import random
>
> print("\tWelcome to 'Guess My Number'!")
> print("I'm thinking of a number between 1 and 100.")
> print("Try to guess it in as few attempts as possible.\n")
>
> # set the initial values
> the_number = random.randint(1,100)
> guess = int(input("Take a guess: "))
> tries = 1
>
> # Guessing loop
> while  guess != the_number:
>
>    if guess > the_number:
>        print("Lowere...")
>    else:
>        print("Higher...")
>
>    guess = int(input("Take a guess: "))
>    tries += 1
>
> print("good job")
>
> input("\n\nPress the enter key to exit.")
>
>
>
> This is a program from "Python for the absulute beginner(which I am).
> End of the chapter is a challenge that asks me to limit the number of
> guesses the player gets.
> If he/she fails to guess the number after a certain number of attempts
> then it displays a message
> about his failure.It needs to be a while loop cause it the topic I'm
> at.Can anyone give me some help
> on where to put the loop.When i put it in with the "if
> guess>the_number" loop, the program either
> prints higher or lower continuously(continuous loop I imagine) or it
> gives me the answer whether its
> right or wrong after a couple guesses.Any help will be appreciated.
>
>
> ------------------------------
>
> Message: 4
> Date: Thu, 15 Dec 2011 09:55:43 +1100
> From: Steven D'Aprano <steve at pearwood.info>
> To: tutor at python.org
> Subject: Re: [Tutor] while loops
> Message-ID: <4EE9296F.80304 at pearwood.info>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> rog capp wrote:
> [...]
>> # Guessing loop
>> while  guess != the_number:
>>     if guess > the_number:
>>         print("Lowere...")
>>     else:
>>         print("Higher...")
>>     guess = int(input("Take a guess: "))
>>     tries += 1
>>
>> print("good job")
>> input("\n\nPress the enter key to exit.")
>>
>>
>>
>> This is a program from "Python for the absulute beginner(which I am).
>> End of the chapter is a challenge that asks me to limit the number of
>> guesses the player gets.
>> If he/she fails to guess the number after a certain number of attempts
>> then it displays a message
>> about his failure.It needs to be a while loop cause it the topic I'm
>> at.Can anyone give me some help
>
> You need a counter to count how many guesses are made. You already have a
> variable counting the number of tries, so you are half-way there.
>
> The loop condition currently is:
>
>     while guess != the_number
>
> or in English:
>
>     "while the guess is not equal to the number: loop"
>
> Still in English, you want to change the condition to:
>
>     "while the guess is not equal to the number and the number of
>      tries is less than the maximum number of tries: loop"
>
> Translate that loop condition from English to Python, and you've got it.
>
> Then, once you have the loop fixed, the final change needed is to change the
> message printed at the end, outside the loop. Currently it unconditionally
> prints "good job". You need to change that to only print "good job" if the
> guess is equal to the number, otherwise print something else.
>
>
>
> --
> Steven
>
>
> ------------------------------
>
> Message: 5
> Date: Wed, 14 Dec 2011 18:03:51 -0500
> From: Dave Angel <d at davea.name>
> To: rog capp <beetlebane at gmail.com>
> Cc: tutor at python.org
> Subject: Re: [Tutor] while loops
> Message-ID: <4EE92B57.5000601 at davea.name>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> On 12/14/2011 05:41 PM, rog capp wrote:
>> # Guess my number
>> #
>> # The computer picks a random number between 1 and 100
>> # The player tries to guess it and the computer lets
>> # the player know  if the guess is to high, to low
>> # or right on the money
>>
>> import random
>>
>> print("\tWelcome to 'Guess My Number'!")
>> print("I'm thinking of a number between 1 and 100.")
>> print("Try to guess it in as few attempts as possible.\n")
>>
>> # set the initial values
>> the_number = random.randint(1,100)
>> guess = int(input("Take a guess: "))
>> tries = 1
>>
>> # Guessing loop
>> while  guess != the_number:
>>
>>      if guess>  the_number:
>>          print("Lowere...")
>>      else:
>>          print("Higher...")
>>
>>      guess = int(input("Take a guess: "))
>>      tries += 1
>>
>> print("good job")
>>
>> input("\n\nPress the enter key to exit.")
>>
>>
>>
>> This is a program from "Python for the absulute beginner(which I am).
>> End of the chapter is a challenge that asks me to limit the number of
>> guesses the player gets.
>> If he/she fails to guess the number after a certain number of attempts
>> then it displays a message
>> about his failure.It needs to be a while loop cause it the topic I'm
>> at.Can anyone give me some help
>> on where to put the loop.When i put it in with the "if
>> guess>the_number" loop, the program either
>> prints higher or lower continuously(continuous loop I imagine) or it
>> gives me the answer whether its
>> right or wrong after a couple guesses.Any help will be appreciated.
>> _
> You already have a while-loop.  So add another condition to it:
>        while guess != answer   and tries< 10:
>
> then outside the loop, write an if-test conditional on whether guess ==
> number
>
> If so, tell him good job, if not, tell him he took too many tries.
>
> --
>
> DaveA
>
>
>
> ------------------------------
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>
> End of Tutor Digest, Vol 94, Issue 53
> *************************************

while  guess != the_number and tries < 5:

    if guess > the_number:
        print("Lower...")
    else:
        print("Higher...")

    guess = int(input("Take a guess: "))
    tries += 1

if guess == the_number:
    print("good job the number was, " , the_number)
    print("it took you" , tries," tries.")
else:
    print("Sorry you took to many tries")

THANKS Steve and Dave got it working now.

roGca


More information about the Tutor mailing list