2014-04-01 172 views
0
#!/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

你肯定錯誤從'getv時()'函數來了嗎?看起來它來自'z = int(x) - 1'這一行,因爲當時沒有定義'x'。 –

+2

它正在返回一個值,但您沒有使用它。 –

回答

4

你當您撥打getv時需要實際分配這些變量:

x, y = getv() 

而且,你不能做兩點返回的功能,改成這樣:

return x, y 
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()

相關問題