为什么这个函数似乎没有返回任何值

时间:2014-04-01 15:32:58

标签: python function return

#!/usr/bin/python3

def isprime(n):
    if n == 0 or n == 1:
        return False
    for x in range(2, n):
        if n % x == 0:
            return False
    else:
        print(n, "is a prime number")
        return True
def getv():
    x = input("Between what 2 number do you want to check for primes?\n>>\t")
    y = input("Second number.\n>>\t")
    return x
    return y
getv()  
z = int(x) - 1

for n in range(int(z),int(y)):
    isprime(n)

运行它,在输入2个值后,我得到一个NameError:name' x'没有定义。 它是在没有getv()函数的情况下,但是我将它包含在输入变量中进行测试检查,以便它们只包含int对象或str并且只包含数字。没有getv()函数,它可以顺利运行。为什么函数不返回值?

2 个答案:

答案 0 :(得分:4)

当您致电getv时,您需要将这些变量实际分配给某些人:

x, y = getv()

此外,您无法在函数中执行两次返回,请将其更改为:

return x, y

答案 1 :(得分:3)

您正在调用getv()而未将返回值分配给任何内容。你可能想做这样的事情

x = getv()

或可能

def getv():
    x = input("Between what 2 number do you want to check for primes?\n>>\t")
    y = input("Second number.\n>>\t")
    return x, y

x, y = getv()

注意:如果您要将这些值用于数学运算,则应将它们转换为int()

的整数