[Tutor] Print result of function doesn't work

Richard Damon Richard at Damon-Family.org
Sun Jul 21 20:09:27 EDT 2024


On 7/21/24 12:06 PM, Torbjorn Svensson Diaz via Tutor wrote:
>
> On 7/21/24 10:24 AM, Alan Gauld via Tutor wrote:
>> On 20/07/2024 17:20, Torbjorn Svensson Diaz via Tutor wrote:
>>
>>> print("What is the length of the first leg of the triangle?")
>>> leg1 = input()
>> You do know that you can put the prompt inside the input()?
>>
>> leg1 = input("What is the length of the first leg of the triangle?")
>
> Yes, "3" as leg1 and "4" as leg2.
>
>
>
>>
>>> print("What is the length of the second leg of the triangle?")
>>> leg2 = input()
>>>
>>> def hypotenuse(leg1, leg2):
>>>       legs = leg1**2 + leg2**2
>>>       result = math.sqrt(legs)
>>>       return result
>>>
>>> x = hypotenuse
>> Here you assign x to the function hypotenuse. But you do not yet call
>> the function. Similar in Lisp to doing
>>
>> (setq x hypotenuse)
>>
>>
>>> print(x)
>> So this will print the function object
>>
>>> When I run it in Thonny it says as follows
>>> What is the length of the first leg of the triangle?
>>> 3
>>> What is the lenght of the second leg of the triangle?
>>> 4
>>> <function hypotenuse at 0x7fa05d5a1940>
>> Just as shown here.
>>
>>> terminal but when I use interactive mode I have no difficulties.
>> Cut n paste your interactive session.
>> I suspect the line where you assign x looks different.
>
> >>> import math
>
> >>> def hypotenuse(leg1, leg2):
> ...     legs = leg1**2 + leg2**2
> ...     result = math.sqrt(legs)
> ...     return result
> ...
> >>> hypotenuse(3, 4)
> 5.0
>
>>> The same program in Scheme is
>>>
>>> (define (hypotenuse leg1 leg2) (sqrt (+ (expt leg1 2) (expt leg2 2))))
>>> (hypotenuse 3 4)
>> Notice that you do not assign the result of the function call, so its
>> not "the same"
>
> Ok, but the following works as a Scheme script
>
> (define (hypotenuse leg1 leg2) (sqrt (+ (expt leg1 2) (expt leg2 2))))
> (display (hypotenuse 3 4))
>
> What I mean is that I get the display to work in Scheme but I don't
> get the print to work in Python.
>
>
>> Also you are not simply evaluating hypotenuse, that would be
>>
>> (hypotenuse)
>>
>> Can you see what's missing?
>
> The parameters of the function? Is that what you mean?
>
>
> If i write like this
>
> import math
>
> print("What is the length of the first leg of the triangle?")
> leg1 = input()
>
> print("What is the length of the second leg of the triangle?")
> leg2 = input()
>
> def hypotenuse(leg1, leg2):
>     legs = leg1**2 + leg2**2
>     result = math.sqrt(legs)
>     return result
>
> x = hypotenuse(leg1, leg2)
> print(x)
>
>
> it still doesn't work.

You might want to look at the error message you get.

Hint, look at the type that input returns, and the sort of type you want
to give to your function.

--
Richard Damon



More information about the Tutor mailing list