简体   繁体   中英

Python: Why does return not actually return anything that I can see

I have the following code:

def is_prime(n):
    limit = (n**0.5) + 1
    q = 2
    p = 1
    while p != 0 and q < limit:
        p = n % q
        q = q + 1
        if p == 0 and n != 2:
            return 'false'
        else:
            return 'true'

But when I send in an integer, there is nothing returned. The console simply moves on to a new command line. What's wrong here?

EDIT 1: The following are screenshots of different scenarios. I would like to make it such that I call the function with a particular number and the function will return 'true' or 'false' depending on the primality of the number sent into the function. I guess I don't really understand the return function very well.

Also, note that when I send in to test 9, it returns true, despite 9 being quite definitely a composite number...should the if/else bits be outside the while loop?

Key to below image:

1: this is the code as it is above and how I call it in the Spyder console

2: adding a print statement outside the function

3: this is a simple factorial function offered by the professor

image here

EDIT 2:

I made a quick change to the structure of the code. I don't really understand why this made it work, but putting the if/else statements outside the while loop made things result in expected true/false outputs

def is_prime(n):
    limit = (n**0.5)+1
    q=2
    p=1
    while p!=0 and q<limit:
        p = n%q
        q = q+1
    if p==0 and n!=2:
        return 'false'
    else:
        return 'true'

Also, I call the function in the console using is_prime(int_of_choice)

Thanks for the helpful suggestions

If you want to print something to the console you have to use a print statement. The return keyword means that you can use this value in a piece of code that calls this function. So to print something:

print (x)

For more information about the print statement see: https://en.wikibooks.org/wiki/Python_Programming/Variables_and_Strings

Nothing is wrong, but you have to print out the return of your function. Like this:

def Test():
    if True:
        return "Hi"

print(Test())

In this case python will show "Hi" in your console.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM