[英]How to return two values from a function, that are created in the function? - Python
def FindingTwoPrimes(n, p1, p2):
p1 = 0
p2 = 0
n = 0
primeList = []
for num in range(1,101):
if all(num%i!=0 for i in range(2,num)):
primeList.append(num)
print (primeList)
print ("Length of Primelist = ", len(primeList))
lengthOfPrimelist = len(primeList)
p1 = primeList[random.randint(0,lengthOfPrimelist)]
p2 = primeList[random.randint(0,lengthOfPrimelist)]
n = p1 * p2
print ("p1 =", p1)
print ("p2 =", p2)
return n
return p1
return p2
FindingTwoPrimes(n, p1, p2)
print(p1, p2, n)
因此,上面的函數將找到兩個我將在公鑰加密系統的方法中使用的素數。 但是,當我運行該函數時,它將p1,p2和n返回為0。這是為什么?如何解決? 另外,任何使該代碼更有效的方法都將受到贊賞:-)
您的函數將返回單個值,因為它的執行將在第一個return
語句之后完成。 您可以使用tuple
返回乘法值
def FindingTwoPrimes(n, p1, p2):
...
return n, p1, p2
n, p1, p2 = FindingTwoPrimes(n, p1, p2)
print(p1, p2, n)
另外,您的代碼根本無法使用。 在函數的開頭,您為其所有參數分配零值。
def FindingTwoPrimes(n, p1, p2):
p1 = 0
p2 = 0
n = 0
嘗試在函數中使用具有不同名稱的變量。
據我了解,您試圖將結果從函數的參數傳回。 這是個壞主意。 使用tuple
從函數中獲取結果
def FindingTwoPrimes():
p1 = 0
p2 = 0
n = 0
...
return n, p1, p2
n, p1, p2 = FindingTwoPrimes()
print(p1, p2, n)
關於問題的最后一部分-如何使其更有效。 如果您打算多次調用此函數,則可以將primeList
計算移到該函數之外。
def FindingTwoPrimes(primeList):
lengthOfPrimelist = len(primeList)
p1 = primeList[random.randint(0,lengthOfPrimelist)]
p2 = primeList[random.randint(0,lengthOfPrimelist)]
n = p1 * p2
print ("p1 =", p1)
print ("p2 =", p2)
return n, p1, p2
primeList = [num for num in range(1,101) if all(num%i!=0 for i in range(2,num))]
print (primeList)
print ("Length of Primelist = ", len(primeList))
n, p1, p2 = FindingTwoPrimes(primeList)
print(p1, p2, n)
一個函數中應該只有一個返回值,但是您有3個返回值。
return n
return p1
return p2
至
return [n,p1,p2]
然后將打印語句更改為
print FindingTwoPrimes(n, p1, p2)
另外,函數中的代碼是錯誤的。 請同時更改
import random
def FindingTwoPrimes(n, p1, p2):
primeList = []
for num in range(1,101):
if all(num%i!=0 for i in range(2,num)):
primeList.append(num)
lengthOfPrimelist = len(primeList)
p1 = primeList[random.randint(0,lengthOfPrimelist)]
p2 = primeList[random.randint(0,lengthOfPrimelist)]
n = p1 * p2
return [p1,p2,n]
print FindingTwoPrimes(10, 11, 12)
為了解決這個只需要
(n, p1, p2) = FindingTwoPrimes(n, p1, p2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.