>>> x=string.digits+string.ascii_letters+string.punctuation
>>> pick=str.join([random.choice(x) for i in range(8)])
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
pick=str.join([random.choice(x) for i in range(8)])
TypeError: descriptor 'join' for 'str' objects doesn't apply to a 'list' object
>>> table=str.maketrans('abcdef123','sirmvyela')
>>>
為什么上面的pick函式編譯就不成功,下面的table函式就能成功呢?
我看著格式一樣的呀??
uj5u.com熱心網友回復:
str.join函式的使用前提是先要設定指定的字符,再去連接序列中的各個元素!所以在pick賦值陳述句之前,你可以先給str賦值
str=''
然后再pick=....
uj5u.com熱心網友回復:
明顯的型別不符合uj5u.com熱心網友回復:
1、是你的str沒有定義吧,str=","試試?2、不知道你的X是什么樣的,字串?,如果是字串,都應該沒有問題
s1=["01","2","3","01","2","3","01","2","3","01","2","3"]
str=","
print (str.join(s1))
print(str.join([random.choice("adfaf") for i in range(8)]))
uj5u.com熱心網友回復:
為什么join的前提是要有先設定的字符啊?我help了str.join,沒發現有這個規定啊?
uj5u.com熱心網友回復:
對的,str沒有定義,可同樣沒有定義,為什么maketrans就能編譯成功,join就不行呢?
uj5u.com熱心網友回復:
看看這2個方法的描述就知道區別所在了:
join() 方法用于將序列中的元素以指定的字符連接生成一個新的字串。
maketrans() 方法用于創建字符映射的轉換表,對于接受兩個引數的最簡單的呼叫方式,第一個引數是字串,表示需要轉換的字符,第二個引數也是字串表示轉換的目標。兩個字串的長度必須相同,為一一對應的關系。
join方法引數只有一個,如果不指定字符,如何進行所謂的連接?
而maketrans方法的引數中已經就有2個,也就沒有指定連接字符的必要了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/80779.html
上一篇:pysnmp 在本地可以接收到trap,部署到服務器卻不能接收到,怎么回事啊,ip,public 是對的
下一篇:python rpyc報錯
