[英]function returns none instead of a tuple
我正在使用python 2.7。 我寫了一個代碼來生成密碼。 為此,我使用random模塊生成了多少個不同類型的字符(大寫,小寫,特殊和數字),用於生成給定長度的密碼。 當為此編寫函數時,它應該返回一個元組,但它返回None。 為什么會這樣?
我嘗試了將打印語句放在兩者之間的隨意調試方法,並找出它出錯的地方。 一切正常,但它返回None。
def passlen(a):
"""Gives length of different characters to be put into passwords"""
uplen=random.randrange(0, a)
lwlen=random.randrange(0, a)
speclen=random.randrange(0, a)
nmbrlen=random.randrange(0, a)
if uplen+lwlen+speclen+nmbrlen==a:
print (uplen, lwlen, speclen, nmbrlen)
return(uplen, lwlen, speclen, nmbrlen)
else:
passlen(a)
x=input("how many characters in the password?")
print(passlen(x))
預期結果是4元組,但它給出了無。
感謝Kamiccolo試圖提供幫助。
該函數應如下所示:
def passlen(a):
"""Gives length of different characters to be put into passwords"""
uplen=int(random.randrange(0, a))
lwlen=int(random.randrange(0, a))
speclen=int(random.randrange(0, a))
nmbrlen=int(random.randrange(0, a))
bab=(uplen, lwlen, speclen, nmbrlen)
if uplen+lwlen+speclen+nmbrlen==a:
return bab
else:
return passlen(a)
一個重復的線程也幫助了我。
所以,你要的是增加4張隨機數a
? 當然,你可以嘗試,直到找到一組加起來選擇4張隨機數a
,但可能需要一段時間的較大值a
(你肯定不希望遞歸地做到這一點)。
選擇0
和a
之間的三個分割點要好得多:
def passlen(a):
splits = sorted([random.randrange(0,a) for _ in range(3)])
uplen = splits[0]
lwlen = splits[1] - uplen
speclen = splits[2] - uplen - lwlen
nmbrlen = a - uplen - lwlen - speclen
return uplen, lwlen, speclen, nmbrlen
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.