1、生成固定長(zhǎng)度的數(shù)字衍慎、字母和特殊字符混合的字符串(定義一個(gè)類转唉,寫在方法里)
import string
import random
class test():
? ? def function(self):
? ? ? ? list = [chr(i) for i in range(65,91)] + [chr(i) for i in range(97,123)] + [ str(i) for i in range(10)] + ['.','-','~','_']?
#大寫字母+小寫字母+數(shù)字 +特殊字符
? ? ? ? num = random.sample(list,10)? #輸出10個(gè)固定長(zhǎng)度的組合字符
? ? ? ? str1=''
? ? ? ? value = str1.join(num) #將取出的十個(gè)隨機(jī)數(shù)進(jìn)行重新合并
? ? ? ? print (value)
#這里定義了類和方法,如果只要功能稳捆,直接取方法里的內(nèi)容即可
a = test()
a.function()
2赠法、生成固定長(zhǎng)度不以數(shù)字開頭的數(shù)字、字母和特殊字符混合的字符串(直接寫)
import random
list = [chr(i) for i in range(65,91)] + [chr(i) for i in range(97,123)] + [ str(i) for i in range(10)] + ['.','-','~','_']?
#大寫字母+小寫字母+數(shù)字 +特殊字符
num = random.sample(list,10)? #輸出10個(gè)固定長(zhǎng)度的組合字符
str1=''?
value = str1.join(num) #將取出的十個(gè)隨機(jī)數(shù)進(jìn)行重新合并?
if not value[0].isdigit():?
? ? print (value)
3乔夯、生成可自定義長(zhǎng)度的數(shù)字砖织、字母和特殊字符混合的字符串(有參數(shù),可直接放在代碼里末荐,不用擔(dān)心函數(shù)返回‘NONE’)
import random
def strGen(num):
? ? ? ? list1= [chr(i) for i in range(65,91)] + [chr(i) for i in range(97,123)] + [ str(i) for i in range(10)] + ['.','-','~','_']
? ? ? ? value=""
? ? ? ? for i in range(num):
? ? ? ? ? ? value = value + list1[random.randint(0, len(list1)-1)]
? ? ? ? return value
strGen(random.randint(1,100)) #隨機(jī)取[1,100]之間的數(shù)字,對(duì)應(yīng)生成相應(yīng)的字符
下面這么寫侧纯,更清楚:
a = random.randint(1,100)
print(a)
print(strGen(a))
注意:
1、python類里的方法都要加個(gè)self變量鞠评,否則會(huì)報(bào)錯(cuò)
Traceback (most recent call last): TypeError: function() takes 0 positional arguments but 1 was given
2茂蚓、方法寫在類里壕鹉,如果沒有創(chuàng)建對(duì)象剃幌,會(huì)報(bào)找不到方法的錯(cuò)誤
Traceback (most recent call last): NameError: name 'openUrl' is not defined
鏈接:莫依痕? http://www.reibang.com/p/2aed19406328
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
其它:
隨機(jī)選取列表中三個(gè)元素字符串
import random
table = ['剪刀', '石頭', '布']
print(random.choice(table))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 需求如下:
# 生成包含數(shù)字聋涨,大小寫和特殊字符的字符串,總長(zhǎng)度為8负乡,數(shù)字牍白,大小寫,特殊字符至少都要有一位
# 生成包含數(shù)字抖棘,開頭可以是(大小寫或數(shù)字或特殊字符的字符串)茂腥,總長(zhǎng)度為8,數(shù)字切省,大小寫最岗,特殊字符至少都要有一位
# 代碼如下
import random,string#調(diào)用random、string模塊
def GenPass():
????src_digits = string.digits#string_數(shù)字'0123456789'
? ? src_uppercase = string.ascii_uppercase#string_大寫字母'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
? ? src_lowercase = string.ascii_lowercase#string_小寫字母'abcdefghijklmnopqrstuvwxyz'
? ? src_special = string.punctuation#string_特殊字符'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
? ? #sample從序列中選擇n個(gè)隨機(jī)獨(dú)立的元素朝捆,返回列表
? ? num = random.sample(src_digits,1)#隨機(jī)取1位數(shù)字
? ? lower = random.sample(src_uppercase,1)#隨機(jī)取1位小寫字母
? ? upper = random.sample(src_lowercase,1)#隨機(jī)取1位大寫字母
? ? special = random.sample(src_special,1)#隨機(jī)取1位大寫字母特殊字符
? ? other = random.sample(string.ascii_letters+string.digits+string.punctuation,4)#隨機(jī)取4位
? ? # 生成字符串
? ? #print(num, lower, upper, special, other)
? ? #下面可以調(diào)整變量順序
? ? pwd_list = num + lower + upper + special + other
# shuffle將一個(gè)序列中的元素隨機(jī)打亂般渡,打亂字符串;去掉下面一行芙盘,就可自定義字符串開頭的'字符'
#random.shuffle(pwd_list)
? ? # 列表轉(zhuǎn)字符串
? ? password_str =''.join(pwd_list)
????print(password_str)
GenPass()